Revert "Merge pull request #1234 from RReverser/pure-cjs"
This reverts commit 7987e6a51dd6e33d6736e98f038d4ace545feabe, reversing changes made to d88d4796854569e9352a6d81489262f6566b75b4.
Paul O’Shannessy committed
Mar 18, 2014 at 11:25 UTC
8d495f3b6ec43454c5c6d4552925459ae90742c9
6 files changed
+137
-117
Gruntfile.js
+18
-18
@@ -2,7 +2,7 @@
2
3
var exec = require('child_process').exec;
4
var jsxTask = require('./grunt/tasks/jsx');
5
-var bundleTask = require('./grunt/tasks/bundle');
5
+var browserifyTask = require('./grunt/tasks/browserify');
6
var populistTask = require('./grunt/tasks/populist');
7
var webdriverPhantomJSTask = require('./grunt/tasks/webdriver-phantomjs');
8
var webdriverJasmineTasks = require('./grunt/tasks/webdriver-jasmine');
@@ -19,7 +19,7 @@ module.exports = function(grunt) {
19
pkg: grunt.file.readJSON('package.json'),
20
copy: require('./grunt/config/copy'),
21
jsx: require('./grunt/config/jsx'),
22
- bundle: require('./grunt/config/bundle'),
22
+ browserify: require('./grunt/config/browserify'),
23
populist: require('./grunt/config/populist'),
24
connect: require('./grunt/config/server')(grunt),
25
"webdriver-jasmine": require('./grunt/config/webdriver-jasmine'),
@@ -52,8 +52,8 @@ module.exports = function(grunt) {
52
// Register jsx:normal and :release tasks.
53
grunt.registerMultiTask('jsx', jsxTask);
54
55
- // Our own bundle-based tasks to build a single JS file build
56
- grunt.registerMultiTask('bundle', bundleTask);
55
+ // Our own browserify-based tasks to build a single JS file build
56
+ grunt.registerMultiTask('browserify', browserifyTask);
57
58
grunt.registerMultiTask('populist', populistTask);
59
@@ -71,22 +71,22 @@ module.exports = function(grunt) {
71
72
grunt.registerTask('version-check', versionCheckTask);
73
74
- grunt.registerTask('build:basic', ['jsx:normal', 'version-check', 'bundle:basic']);
75
- grunt.registerTask('build:addons', ['jsx:normal', 'bundle:addons']);
76
- grunt.registerTask('build:transformer', ['jsx:normal', 'bundle:transformer']);
77
- grunt.registerTask('build:min', ['jsx:normal', 'version-check', 'bundle:min']);
78
- grunt.registerTask('build:addons-min', ['jsx:normal', 'bundle:addonsMin']);
74
+ grunt.registerTask('build:basic', ['jsx:normal', 'version-check', 'browserify:basic']);
75
+ grunt.registerTask('build:addons', ['jsx:normal', 'browserify:addons']);
76
+ grunt.registerTask('build:transformer', ['jsx:normal', 'browserify:transformer']);
77
+ grunt.registerTask('build:min', ['jsx:normal', 'version-check', 'browserify:min']);
78
+ grunt.registerTask('build:addons-min', ['jsx:normal', 'browserify:addonsMin']);
79
grunt.registerTask('build:withCodeCoverageLogging', [
80
'jsx:normal',
81
'version-check',
82
- 'bundle:withCodeCoverageLogging'
82
+ 'browserify:withCodeCoverageLogging'
83
]);
84
grunt.registerTask('build:perf', [
85
'jsx:normal',
86
'version-check',
87
- 'bundle:transformer',
88
- 'bundle:basic',
89
- 'bundle:min',
87
+ 'browserify:transformer',
88
+ 'browserify:basic',
89
+ 'browserify:min',
90
'download-previous-version'
91
]);
92
grunt.registerTask('build:test', [
@@ -195,11 +195,11 @@ module.exports = function(grunt) {
195
'delete-build-modules',
196
'jsx:normal',
197
'version-check',
198
- 'bundle:basic',
199
- 'bundle:transformer',
200
- 'bundle:addons',
201
- 'bundle:min',
202
- 'bundle:addonsMin',
198
+ 'browserify:basic',
199
+ 'browserify:transformer',
200
+ 'browserify:addons',
201
+ 'browserify:min',
202
+ 'browserify:addonsMin',
203
'npm-react:release',
204
'npm-react:pack',
205
'npm-react-tools:pack',
grunt/config/browserify.js
renamed
+48
-58
@@ -3,11 +3,11 @@
3
4
'use strict';
5
6
-var deamdify = require('deamdify');
6
var envify = require('envify/custom');
7
var es3ify = require('es3ify');
8
var grunt = require('grunt');
9
var UglifyJS = require('uglify-js');
10
+var uglifyify = require('uglifyify');
11
var _ = require('lodash');
12
13
var SIMPLE_TEMPLATE =
@@ -55,76 +55,66 @@ function simpleBannerify(src) {
55
'\n' + src;
56
}
57
58
-function override(obj1, obj2) {
59
- return _.merge({}, obj1, obj2, function (a, b) {
60
- if (_.isArray(a)) {
61
- return b;
62
- }
63
- })
64
-}
65
-
58
+// Our basic config which we'll add to to make our other builds
59
var basic = {
67
- src: './build/modules/React.js',
68
- dest: './build/react.js',
69
- options: {
70
- debug: false,
71
- standalone: 'React',
72
- transforms: [envify({NODE_ENV: 'development'})],
73
- after: [es3ify.transform, simpleBannerify]
74
- }
60
+ entries: [
61
+ './build/modules/React.js'
62
+ ],
63
+ outfile: './build/react.js',
64
+ debug: false,
65
+ standalone: 'React',
66
+ transforms: [envify({NODE_ENV: 'development'})],
67
+ after: [es3ify.transform, simpleBannerify]
68
};
69
77
-var min = override(basic, {
78
- dest: './build/react.min.js',
79
- options: {
80
- debug: false,
81
- transforms: [envify({NODE_ENV: 'production'})],
82
- after: [minify, bannerify]
83
- }
70
+var min = _.merge({}, basic, {
71
+ outfile: './build/react.min.js',
72
+ debug: false,
73
+ transforms: [envify({NODE_ENV: 'production'}), uglifyify],
74
+ after: [minify, bannerify]
75
});
76
77
var transformer = {
87
- src: './vendor/browser-transforms.js',
88
- dest: './build/JSXTransformer.js',
89
- options: {
90
- debug: false,
91
- standalone: 'JSXTransformer',
92
- transforms: [deamdify],
93
- after: [es3ify.transform, simpleBannerify]
94
- }
78
+ entries:[
79
+ './vendor/browser-transforms.js'
80
+ ],
81
+ outfile: './build/JSXTransformer.js',
82
+ debug: false,
83
+ standalone: 'JSXTransformer',
84
+ after: [es3ify.transform, simpleBannerify]
85
};
86
87
var addons = {
98
- src: './build/modules/ReactWithAddons.js',
99
- dest: './build/react-with-addons.js',
100
- options: {
101
- debug: false,
102
- standalone: 'React',
103
- transforms: [envify({NODE_ENV: 'development'})],
104
- packageName: 'React (with addons)',
105
- after: [es3ify.transform, simpleBannerify]
106
- }
88
+ entries: [
89
+ './build/modules/ReactWithAddons.js'
90
+ ],
91
+ outfile: './build/react-with-addons.js',
92
+ debug: false,
93
+ standalone: 'React',
94
+ transforms: [envify({NODE_ENV: 'development'})],
95
+ packageName: 'React (with addons)',
96
+ after: [es3ify.transform, simpleBannerify]
97
};
98
109
-var addonsMin = override(addons, {
110
- dest: './build/react-with-addons.min.js',
111
- options: {
112
- debug: false,
113
- transforms: [envify({NODE_ENV: 'production'})],
114
- after: [minify, bannerify]
115
- }
99
+var addonsMin = _.merge({}, addons, {
100
+ outfile: './build/react-with-addons.min.js',
101
+ debug: false,
102
+ transforms: [envify({NODE_ENV: 'production'}), uglifyify],
103
+ after: [minify, bannerify]
104
});
105
118
-var withCodeCoverageLogging = override(basic, {
119
- options: {
120
- debug: true,
121
- transforms: [
122
- envify({NODE_ENV: 'development'}),
123
- require('coverify')
124
- ],
125
- after: []
126
- }
127
-});
106
+var withCodeCoverageLogging = {
107
+ entries: [
108
+ './build/modules/React.js'
109
+ ],
110
+ outfile: './build/react.js',
111
+ debug: true,
112
+ standalone: 'React',
113
+ transforms: [
114
+ envify({NODE_ENV: 'development'}),
115
+ require('coverify')
116
+ ]
117
+};
118
119
module.exports = {
120
basic: basic,
grunt/tasks/browserify.js
new
+68
@@ -0,0 +1,68 @@
1
+'use strict';
2
+
3
+var browserify = require('browserify');
4
+var grunt = require('grunt');
5
+
6
+module.exports = function() {
7
+ var config = this.data;
8
+
9
+ // This task is async...
10
+ var done = this.async();
11
+
12
+ // More/better assertions
13
+ // grunt.config.requires('outfile');
14
+ // grunt.config.requires('entries');
15
+ config.transforms = config.transforms || [];
16
+ config.after = config.after || [];
17
+ if (typeof config.after === '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
43
+ var options = {
44
+ debug: config.debug, // sourcemaps
45
+ standalone: config.standalone // global
46
+ };
47
+
48
+ // TODO: make sure this works, test with this too
49
+ config.transforms.forEach(function(transform) {
50
+ bundle.transform({}, transform);
51
+ });
52
+
53
+ // Actually bundle it up
54
+ 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
+ });
64
+
65
+ grunt.file.write(config.outfile, src);
66
+ done();
67
+ });
68
+};
grunt/tasks/bundle.js
deleted
-38
@@ -1,38 +0,0 @@
1
-'use strict';
2
-
3
-var cjs = require('pure-cjs');
4
-var grunt = require('grunt');
5
-
6
-module.exports = function() {
7
- var config = this.options({
8
- transforms: [],
9
- after: []
10
- });
11
-
12
- // This task is async...
13
- var done = this.async();
14
-
15
- // Extract options
16
- var options = {
17
- input: this.files[0].src[0],
18
- output: this.files[0].dest,
19
- map: config.debug, // sourcemaps
20
- exports: config.standalone, // global
21
- transform: config.transforms,
22
- dryRun: true // we will write to disk ourselves
23
- };
24
-
25
- // Actually bundle it up
26
- var _this = this;
27
-
28
- cjs.transform(options).then(function(result) {
29
- grunt.file.write(result.options.output, config.after.reduce(function(src, fn) {
30
- return fn.call(_this, src);
31
- }, result.code));
32
-
33
- done();
34
- }, function(err) {
35
- grunt.log.error(err);
36
- done(false);
37
- });
38
-};
package.json
+1
-2
@@ -39,8 +39,8 @@
39
},
40
"devDependencies": {
41
"benchmark": "~1.0.0",
42
+ "browserify": "~3.20.0",
43
"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,7 +61,6 @@
61
"phantomjs": "~1.9",
62
"platform": "~1.0.0",
63
"populist": "~0.1.6",
64
- "pure-cjs": "~1.9.0",
64
"recast": "~0.5.6",
65
"sauce-tunnel": "~1.1.0",
66
"semver": "~2.2.1",
vendor/browser-transforms.js
+2
-1
@@ -20,6 +20,7 @@
20
var runScripts;
21
var headEl;
22
23
+var buffer = require('buffer');
24
var transform = require('jstransform').transform;
25
var visitors = require('./fbtransform/visitors').transformVisitors;
26
var docblock = require('jstransform/src/docblock');
@@ -122,7 +123,7 @@ var transformCode = function(code, source) {
123
return (
124
transformed.code +
125
'//# sourceMappingURL=data:application/json;base64,' +
125
- btoa(unescape(encodeURIComponent(JSON.stringify(map))))
126
+ buffer.Buffer(JSON.stringify(map)).toString('base64')
127
);
128
} else {
129
return code;