Files
react/grunt/config/browserify.js
T
Paul O’Shannessy d704bc24f4 Initial build of ReactTransitionGroup
This builds `ReactTransitionGroup` with it's own copy of `React`, which
it total clownshoes. This should be technically usable, but definitely
should not be used in any production environment.
2013-09-07 16:18:14 -07:00

95 lines
2.3 KiB
JavaScript

/* jshint multistr:true */
/* jshint -W040 */
'use strict';
var grunt = require('grunt');
var UglifyJS = require('uglify-js');
var SIMPLE_TEMPLATE =
'/**\n\
* @PACKAGE@ v@VERSION@\n\
*/';
var LICENSE_TEMPLATE =
'/**\n\
* @PACKAGE@ v@VERSION@\n\
*\n\
* Copyright 2013 Facebook, Inc.\n\
*\n\
* Licensed under the Apache License, Version 2.0 (the "License");\n\
* you may not use this file except in compliance with the License.\n\
* You may obtain a copy of the License at\n\
*\n\
* http://www.apache.org/licenses/LICENSE-2.0\n\
*\n\
* Unless required by applicable law or agreed to in writing, software\n\
* distributed under the License is distributed on an "AS IS" BASIS,\n\
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\
* See the License for the specific language governing permissions and\n\
* limitations under the License.\n\
*/';
function minify(src) {
return UglifyJS.minify(src, { fromString: true }).code;
}
// TODO: move this out to another build step maybe.
function bannerify(src) {
var version = grunt.config.data.pkg.version;
return LICENSE_TEMPLATE.replace('@PACKAGE@', this.data.standalone)
.replace('@VERSION@', version) +
'\n' + src;
}
function simpleBannerify(src) {
var version = grunt.config.data.pkg.version;
return SIMPLE_TEMPLATE.replace('@PACKAGE@', this.data.standalone)
.replace('@VERSION@', version) +
'\n' + src;
}
// Our basic config which we'll add to to make our other builds
var basic = {
entries: [
'./build/modules/React.js'
],
outfile: './build/react.js',
debug: false,
standalone: 'React',
after: [simpleBannerify]
};
var min = grunt.util._.merge({}, basic, {
outfile: './build/react.min.js',
debug: false,
after: [minify, bannerify]
});
var transformer = {
entries:[
'./vendor/browser-transforms.js'
],
outfile: './build/JSXTransformer.js',
debug: false,
standalone: 'JSXTransformer',
after: [simpleBannerify]
};
var transitions = {
entries: [
'./build/modules/ReactTransitionGroup.js'
],
outfile: './build/react-transitiongroup.js',
debug: false,
standalone: 'ReactTransitionGroup',
after: [simpleBannerify]
};
module.exports = {
basic: basic,
min: min,
transformer: transformer,
transitions: transitions
};