]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
generate commonjs/npm entrypoint module via grunt task
authorJames Friend <james.friend@agworld.com.au>
Thu, 28 Aug 2014 01:24:23 +0000 (09:24 +0800)
committerJames Friend <james.friend@agworld.com.au>
Thu, 28 Aug 2014 01:24:23 +0000 (09:24 +0800)
Gruntfile.js
dist/js/npm.js
grunt/bs-commonjs-generator.js [new file with mode: 0644]

index ca9d43eec475001de8861602a2f30e47cf35bece..3fc645fafea53e267d7ed4c98eeaffea9ec0b980 100644 (file)
@@ -20,6 +20,7 @@ module.exports = function (grunt) {
   var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
   var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
   var generateRawFiles = require('./grunt/bs-raw-files-generator.js');
+  var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js');
   var updateShrinkwrap = require('./grunt/shrinkwrap.js');
 
   // Project configuration.
@@ -459,6 +460,11 @@ module.exports = function (grunt) {
     generateRawFiles(grunt, banner);
   });
 
+  grunt.registerTask('build-commonjs', 'Build CommonJS entrypoint module for JS.', function () {
+    var files = grunt.config.get('concat.bootstrap.src');
+    generateCommonJSModule(grunt, files);
+  });
+
   // Task for updating the npm packages used by the Travis build.
   grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', 'exec:npmShrinkWrap', '_update-shrinkwrap']);
   grunt.registerTask('_update-shrinkwrap', function () { updateShrinkwrap.call(this, grunt); });
index 17b0feda3331cad6de8974080ff531d652126e08..c7c20adfe1e608ed2b11a8b190a4a630040e62f8 100644 (file)
@@ -1,12 +1,12 @@
-require('../../js/transition')
-require('../../js/alert')
-require('../../js/button')
-require('../../js/carousel')
-require('../../js/collapse')
-require('../../js/dropdown')
-require('../../js/modal')
-require('../../js/tooltip')
-require('../../js/popover')
-require('../../js/scrollspy')
-require('../../js/tab')
-require('../../js/affix')
+require('../../js/transition.js')
+require('../../js/alert.js')
+require('../../js/button.js')
+require('../../js/carousel.js')
+require('../../js/collapse.js')
+require('../../js/dropdown.js')
+require('../../js/modal.js')
+require('../../js/tooltip.js')
+require('../../js/popover.js')
+require('../../js/scrollspy.js')
+require('../../js/tab.js')
+require('../../js/affix.js')
\ No newline at end of file
diff --git a/grunt/bs-commonjs-generator.js b/grunt/bs-commonjs-generator.js
new file mode 100644 (file)
index 0000000..0a76333
--- /dev/null
@@ -0,0 +1,23 @@
+'use strict';
+var fs = require('fs');
+var path = require('path');
+
+var destDir = 'dist/js';
+var destFilename = 'npm.js';
+var destFilepath = path.join(destDir, destFilename);
+
+function srcPathToDestRequire(srcFilepath) {
+  var requirePath = path.relative(destDir, srcFilepath);
+  return "require('"+requirePath+"')";
+}
+
+module.exports = function generateCommonJSModule(grunt, files) {
+  var moduleOutputJs = files.map(srcPathToDestRequire).join('\n');
+  try {
+    fs.writeFileSync(destFilepath, moduleOutputJs);
+  }
+  catch (err) {
+    grunt.fail.warn(err);
+  }
+  grunt.log.writeln('File ' + destFilepath.cyan + ' created.');
+};