browserify update

This commit is contained in:
Paul O’Shannessy 2014-09-30 20:31:36 -07:00
parent 67307ce850
commit d03d49101b
3 changed files with 30 additions and 36 deletions

View File

@ -8,7 +8,7 @@ var es3ify = require('es3ify');
var grunt = require('grunt');
var UglifyJS = require('uglify-js');
var uglifyify = require('uglifyify');
var _ = require('lodash');
var derequire = require('derequire');
var SIMPLE_TEMPLATE =
'/**\n\
@ -58,15 +58,19 @@ var basic = {
debug: false,
standalone: 'React',
transforms: [envify({NODE_ENV: 'development'})],
after: [es3ify.transform, simpleBannerify]
after: [es3ify.transform, derequire, simpleBannerify]
};
var min = _.merge({}, basic, {
var min = {
entries: [
'./build/modules/React.js'
],
outfile: './build/react.min.js',
debug: false,
standalone: 'React',
transforms: [envify({NODE_ENV: 'production'}), uglifyify],
after: [minify, bannerify]
});
after: [es3ify.transform, derequire, minify, bannerify]
};
var transformer = {
entries:[
@ -75,7 +79,8 @@ var transformer = {
outfile: './build/JSXTransformer.js',
debug: false,
standalone: 'JSXTransformer',
after: [es3ify.transform, simpleBannerify]
transforms: [],
after: [es3ify.transform, derequire, simpleBannerify]
};
var addons = {
@ -85,17 +90,22 @@ var addons = {
outfile: './build/react-with-addons.js',
debug: false,
standalone: 'React',
transforms: [envify({NODE_ENV: 'development'})],
packageName: 'React (with addons)',
after: [es3ify.transform, simpleBannerify]
transforms: [envify({NODE_ENV: 'development'})],
after: [es3ify.transform, derequire, simpleBannerify]
};
var addonsMin = _.merge({}, addons, {
var addonsMin = {
entries: [
'./build/modules/ReactWithAddons.js'
],
outfile: './build/react-with-addons.min.js',
debug: false,
standalone: 'React',
packageName: 'React (with addons)',
transforms: [envify({NODE_ENV: 'production'}), uglifyify],
after: [minify, bannerify]
});
after: [es3ify.transform, derequire, minify, bannerify]
};
var withCodeCoverageLogging = {
entries: [

View File

@ -14,50 +14,33 @@ module.exports = function() {
// grunt.config.requires('entries');
config.transforms = config.transforms || [];
config.after = config.after || [];
if (typeof config.after === 'function') {
config.after = [config.after];
}
// create the bundle we'll work with
var entries = grunt.file.expand(config.entries);
var bundle = browserify(entries);
// Make sure the things that need to be exposed are.
var requires = config.requires || {};
if (requires instanceof Array) {
grunt.file.expand({
nonull: true, // Keep IDs that don't expand to anything.
cwd: "src"
}, requires).forEach(function(name) {
bundle.require("./build/modules/" + name, {
expose: name.replace(/\.js$/i, "")
});
});
} else if (typeof requires === "object") {
Object.keys(requires).forEach(function(name) {
bundle.require(requires[name], { expose: name });
});
}
// Extract other options
var options = {
entries: entries,
debug: config.debug, // sourcemaps
standalone: config.standalone // global
};
// TODO: make sure this works, test with this too
var bundle = browserify(options);
config.transforms.forEach(function(transform) {
bundle.transform({}, transform);
});
// Actually bundle it up
var _this = this;
bundle.bundle(options, function(err, src) {
bundle.bundle(function(err, buf) {
if (err) {
grunt.log.error(err);
done();
return done();
}
var src = buf.toString();
config.after.forEach(function(fn) {
src = fn.call(_this, src);
});

View File

@ -32,8 +32,9 @@
},
"devDependencies": {
"benchmark": "~1.0.0",
"browserify": "^4.1.10",
"browserify": "^6.1.0",
"coverify": "~1.0.4",
"derequire": "^1.2.0",
"envify": "^3.0.0",
"es3ify": "~0.1.2",
"es5-shim": "^4.0.0",