@samitouri / QOS-React-2 / commits / 6fc53e0438

Enable (and apply) global transforms with browserify

This ensures that we can consume code from npm that has our process.env pattern. Unfortunately we'll run the same transform on minified builds but it's pretty quick.

Paul O’Shannessy committed Jul 20, 2015 at 14:29 UTC 6fc53e043876f5b53b144847faaeb7ea4398f9c3
2 files changed +17 -4
grunt/config/browserify.js
+12 -4
@@ -9,6 +9,9 @@ var uglifyify = require('uglifyify');
9 var derequire = require('derequire');
10 var collapser = require('bundle-collapser/plugin');
11
12 +var envifyDev = envify({NODE_ENV: process.env.NODE_ENV || 'development'});
13 +var envifyProd = envify({NODE_ENV: process.env.NODE_ENV || 'production'});
14 +
15 var SIMPLE_TEMPLATE =
16 '/**\n\
17 * @PACKAGE@ v@VERSION@\n\
@@ -56,7 +59,8 @@ var basic = {
59 outfile: './build/react.js',
60 debug: false,
61 standalone: 'React',
59 - transforms: [envify({NODE_ENV: process.env.NODE_ENV || 'development'})],
62 + // Apply as global transform so that we also envify fbjs and any other deps
63 + globalTransforms: [envifyDev],
64 plugins: [collapser],
65 after: [derequire, simpleBannerify],
66 };
@@ -68,7 +72,10 @@ var min = {
72 outfile: './build/react.min.js',
73 debug: false,
74 standalone: 'React',
71 - transforms: [envify({NODE_ENV: process.env.NODE_ENV || 'production'}), uglifyify],
75 + // Envify twice. The first ensures that when we uglifyify, we have the right
76 + // conditions to exclude requires. The global transform runs on deps.
77 + transforms: [envifyProd, uglifyify],
78 + globalTransforms: [envifyProd],
79 plugins: [collapser],
80 // No need to derequire because the minifier will mangle
81 // the "require" calls.
@@ -100,7 +107,7 @@ var addons = {
107 debug: false,
108 standalone: 'React',
109 packageName: 'React (with addons)',
103 - transforms: [envify({NODE_ENV: process.env.NODE_ENV || 'development'})],
110 + globalTransforms: [envifyDev],
111 plugins: [collapser],
112 after: [derequire, simpleBannerify],
113 };
@@ -113,7 +120,8 @@ var addonsMin = {
120 debug: false,
121 standalone: 'React',
122 packageName: 'React (with addons)',
116 - transforms: [envify({NODE_ENV: process.env.NODE_ENV || 'production'}), uglifyify],
123 + transforms: [envifyProd, uglifyify],
124 + globalTransforms: [envifyProd],
125 plugins: [collapser],
126 // No need to derequire because the minifier will mangle
127 // the "require" calls.
grunt/tasks/browserify.js
+5
@@ -13,6 +13,7 @@ module.exports = function() {
13 // grunt.config.requires('outfile');
14 // grunt.config.requires('entries');
15 config.transforms = config.transforms || [];
16 + config.globalTransforms = config.globalTransforms || [];
17 config.plugins = config.plugins || [];
18 config.after = config.after || [];
19 config.paths = config.paths || [];
@@ -35,6 +36,10 @@ module.exports = function() {
36 bundle.transform({}, transform);
37 });
38
39 + config.globalTransforms.forEach(function(transform) {
40 + bundle.transform({global: true}, transform);
41 + });
42 +
43 config.plugins.forEach(bundle.plugin, bundle);
44
45 // Actually bundle it up