Switched from browserify to pure-cjs bundler. Optimizations and fix for JSXTransformer build. Dropped dependency on emulation of Node.js native modules. Added deamdify step for JSXTransformer build.
Switched from browserify to pure-cjs bundler. Optimizations and fix for JSXTransformer build. Dropped dependency on emulation of Node.js native modules. Added deamdify step for JSXTransformer build.
Ingvar Stepanyan committed
Mar 8, 2014 at 16:33 UTC
3171436d979a61f55e997ac74915b94726fcbe7b
4 files changed
+20
-43
grunt/config/browserify.js
+2
@@ -3,6 +3,7 @@
3
4
'use strict';
5
6
+var deamdify = require('deamdify');
7
var envify = require('envify/custom');
8
var es3ify = require('es3ify');
9
var grunt = require('grunt');
@@ -81,6 +82,7 @@ var transformer = {
82
outfile: './build/JSXTransformer.js',
83
debug: false,
84
standalone: 'JSXTransformer',
85
+ transforms: [deamdify],
86
after: [es3ify.transform, simpleBannerify]
87
};
88
grunt/tasks/browserify.js
+15
-40
@@ -1,6 +1,6 @@
1
'use strict';
2
3
-var browserify = require('browserify');
3
+var cjs = require('pure-cjs');
4
var grunt = require('grunt');
5
6
module.exports = function() {
@@ -18,51 +18,26 @@ module.exports = function() {
18
config.after = [config.after];
19
}
20
21
- // create the bundle we'll work with
22
- var entries = grunt.file.expand(config.entries);
23
- var bundle = browserify(entries);
24
-
25
- // Make sure the things that need to be exposed are.
26
- var requires = config.requires || {};
27
- if (requires instanceof Array) {
28
- grunt.file.expand({
29
- nonull: true, // Keep IDs that don't expand to anything.
30
- cwd: "src"
31
- }, requires).forEach(function(name) {
32
- bundle.require("./build/modules/" + name, {
33
- expose: name.replace(/\.js$/i, "")
34
- });
35
- });
36
- } else if (typeof requires === "object") {
37
- Object.keys(requires).forEach(function(name) {
38
- bundle.require(requires[name], { expose: name });
39
- });
40
- }
41
-
42
- // Extract other options
21
+ // Extract options
22
var options = {
44
- debug: config.debug, // sourcemaps
45
- standalone: config.standalone // global
23
+ input: config.entries[0],
24
+ output: config.outfile,
25
+ map: config.debug, // sourcemaps
26
+ exports: config.standalone, // global
27
+ transform: config.transforms,
28
+ dryRun: true // we will write to disk ourselves
29
};
30
48
- // TODO: make sure this works, test with this too
49
- config.transforms.forEach(function(transform) {
50
- bundle.transform({}, transform);
51
- });
52
-
31
// Actually bundle it up
32
var _this = this;
55
- bundle.bundle(options, function(err, src) {
56
- if (err) {
57
- grunt.log.error(err);
58
- done();
59
- }
60
-
61
- config.after.forEach(function(fn) {
62
- src = fn.call(_this, src);
63
- });
33
+ cjs.transform(options).then(function(result) {
34
+ grunt.file.write(config.outfile, config.after.reduce(function(src, fn) {
35
+ return fn.call(_this, src);
36
+ }, result.code));
37
65
- grunt.file.write(config.outfile, src);
38
+ done();
39
+ }, function(err) {
40
+ grunt.log.error(err);
41
done();
42
});
43
};
package.json
+2
-1
@@ -39,8 +39,8 @@
39
},
40
"devDependencies": {
41
"benchmark": "~1.0.0",
42
- "browserify": "~3.20.0",
42
"coverify": "~1.0.4",
43
+ "deamdify": "~0.1.1",
44
"envify": "~1.2.0",
45
"es3ify": "~0.1.2",
46
"es5-shim": "~2.3.0",
@@ -61,6 +61,7 @@
61
"phantomjs": "~1.9",
62
"platform": "~1.0.0",
63
"populist": "~0.1.6",
64
+ "pure-cjs": "~1.8.3",
65
"recast": "~0.5.6",
66
"sauce-tunnel": "~1.1.0",
67
"semver": "~2.2.1",
vendor/browser-transforms.js
+1
-2
@@ -20,7 +20,6 @@
20
var runScripts;
21
var headEl;
22
23
-var buffer = require('buffer');
23
var transform = require('jstransform').transform;
24
var visitors = require('./fbtransform/visitors').transformVisitors;
25
var docblock = require('jstransform/src/docblock');
@@ -123,7 +122,7 @@ var transformCode = function(code, source) {
122
return (
123
transformed.code +
124
'//# sourceMappingURL=data:application/json;base64,' +
126
- buffer.Buffer(JSON.stringify(map)).toString('base64')
125
+ btoa(unescape(encodeURIComponent(JSON.stringify(map))))
126
);
127
} else {
128
return code;