@samitouri / QOS-React-2 / commits / 8d495f3b6e

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;