@samitouri / QOS-React-2 / commits / 25773ed1b3

CommonJS builder config to Grunt style for easier handling and readability.

Ingvar Stepanyan committed Mar 11, 2014 at 13:40 UTC 25773ed1b39a20e0beaedefb0bd618e1bea5164e
2 files changed +65 -61
grunt/config/commonjs.js
+57 -48
@@ -55,67 +55,76 @@ function simpleBannerify(src) {
55 '\n' + src;
56 }
57
58 -// Our basic config which we'll add to to make our other builds
58 +function override(obj1, obj2) {
59 + return _.merge({}, obj1, obj2, function (a, b) {
60 + if (_.isArray(a)) {
61 + return b;
62 + }
63 + })
64 +}
65 +
66 var basic = {
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]
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 + }
75 };
76
70 -var min = _.merge({}, basic, {
71 - outfile: './build/react.min.js',
72 - debug: false,
73 - transforms: [envify({NODE_ENV: 'production'})],
74 - after: [minify, bannerify]
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 + }
84 });
85
86 var transformer = {
78 - entries:[
79 - './vendor/browser-transforms.js'
80 - ],
81 - outfile: './build/JSXTransformer.js',
82 - debug: false,
83 - standalone: 'JSXTransformer',
84 - transforms: [deamdify],
85 - after: [es3ify.transform, simpleBannerify]
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 + }
95 };
96
97 var addons = {
89 - entries: [
90 - './build/modules/ReactWithAddons.js'
91 - ],
92 - outfile: './build/react-with-addons.js',
93 - debug: false,
94 - standalone: 'React',
95 - transforms: [envify({NODE_ENV: 'development'})],
96 - packageName: 'React (with addons)',
97 - after: [es3ify.transform, simpleBannerify]
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 + }
107 };
108
100 -var addonsMin = _.merge({}, addons, {
101 - outfile: './build/react-with-addons.min.js',
102 - debug: false,
103 - transforms: [envify({NODE_ENV: 'production'})],
104 - after: [minify, bannerify]
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 + }
116 });
117
107 -var withCodeCoverageLogging = {
108 - entries: [
109 - './build/modules/React.js'
110 - ],
111 - outfile: './build/react.js',
112 - debug: true,
113 - standalone: 'React',
114 - transforms: [
115 - envify({NODE_ENV: 'development'}),
116 - require('coverify')
117 - ]
118 -};
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 +});
128
129 module.exports = {
130 basic: basic,
grunt/tasks/commonjs.js
+8 -13
@@ -4,24 +4,18 @@ var cjs = require('pure-cjs');
4 var grunt = require('grunt');
5
6 module.exports = function() {
7 - var config = this.data;
7 + var config = this.options({
8 + transforms: [],
9 + after: []
10 + });
11
12 // This task is async...
13 var done = this.async();
14
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 -
15 // Extract options
16 var options = {
23 - input: config.entries[0],
24 - output: config.outfile,
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,
@@ -30,8 +24,9 @@ module.exports = function() {
24
25 // Actually bundle it up
26 var _this = this;
27 +
28 cjs.transform(options).then(function(result) {
34 - grunt.file.write(config.outfile, config.after.reduce(function(src, fn) {
29 + grunt.file.write(_this.files[0].dest, config.after.reduce(function(src, fn) {
30 return fn.call(_this, src);
31 }, result.code));
32