2013-10-23 08:59:24 +08:00
|
|
|
'use strict';
|
|
|
|
|
|
2014-02-07 02:30:39 +08:00
|
|
|
var fs = require('fs');
|
2013-10-23 08:59:24 +08:00
|
|
|
var grunt = require('grunt');
|
|
|
|
|
|
2015-06-18 02:43:28 +08:00
|
|
|
var src = 'packages/react/';
|
|
|
|
|
var dest = 'build/packages/react/';
|
2013-10-23 08:59:24 +08:00
|
|
|
var modSrc = 'build/modules/';
|
|
|
|
|
var lib = dest + 'lib/';
|
2014-07-04 06:21:22 +08:00
|
|
|
var dist = dest + 'dist/';
|
|
|
|
|
var distFiles = [
|
2015-06-17 02:01:15 +08:00
|
|
|
'react.js',
|
|
|
|
|
'react.min.js',
|
|
|
|
|
'react-with-addons.js',
|
|
|
|
|
'react-with-addons.min.js',
|
2014-07-04 06:21:22 +08:00
|
|
|
];
|
2013-10-23 08:59:24 +08:00
|
|
|
|
|
|
|
|
function buildRelease() {
|
|
|
|
|
// delete build/react-core for fresh start
|
2015-02-13 04:48:11 +08:00
|
|
|
if (grunt.file.exists(dest)) {
|
|
|
|
|
grunt.file.delete(dest);
|
|
|
|
|
}
|
2013-10-23 08:59:24 +08:00
|
|
|
|
|
|
|
|
// mkdir -p build/react-core/lib
|
|
|
|
|
grunt.file.mkdir(lib);
|
|
|
|
|
|
2014-01-17 17:15:15 +08:00
|
|
|
// Copy npm-react/**/* to build/npm-react
|
|
|
|
|
// and build/modules/**/* to build/react-core/lib
|
|
|
|
|
var mappings = [].concat(
|
|
|
|
|
grunt.file.expandMapping('**/*', dest, {cwd: src}),
|
2015-11-10 04:47:22 +08:00
|
|
|
grunt.file.expandMapping('**/*', lib, {cwd: modSrc}),
|
|
|
|
|
grunt.file.expandMapping('{LICENSE,PATENTS}', dest)
|
2014-01-17 17:15:15 +08:00
|
|
|
);
|
|
|
|
|
mappings.forEach(function(mapping) {
|
2015-02-13 04:48:11 +08:00
|
|
|
var mappingSrc = mapping.src[0];
|
|
|
|
|
var mappingDest = mapping.dest;
|
|
|
|
|
if (grunt.file.isDir(mappingSrc)) {
|
|
|
|
|
grunt.file.mkdir(mappingDest);
|
2013-10-23 08:59:24 +08:00
|
|
|
} else {
|
2015-02-13 04:48:11 +08:00
|
|
|
grunt.file.copy(mappingSrc, mappingDest);
|
2013-10-23 08:59:24 +08:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2014-07-04 06:21:22 +08:00
|
|
|
// Make built source available inside npm package
|
|
|
|
|
grunt.file.mkdir(dist);
|
|
|
|
|
distFiles.forEach(function(file) {
|
|
|
|
|
grunt.file.copy('build/' + file, dist + file);
|
|
|
|
|
});
|
|
|
|
|
|
2013-10-23 08:59:24 +08:00
|
|
|
// modify build/react-core/package.json to set version ##
|
|
|
|
|
var pkg = grunt.file.readJSON(dest + 'package.json');
|
|
|
|
|
pkg.version = grunt.config.data.pkg.version;
|
|
|
|
|
grunt.file.write(dest + 'package.json', JSON.stringify(pkg, null, 2));
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-07 02:30:39 +08:00
|
|
|
function packRelease() {
|
|
|
|
|
var done = this.async();
|
|
|
|
|
var spawnCmd = {
|
|
|
|
|
cmd: 'npm',
|
2015-06-18 02:43:28 +08:00
|
|
|
args: ['pack', 'packages/react'],
|
2014-02-07 02:30:39 +08:00
|
|
|
opts: {
|
2015-06-02 07:31:08 +08:00
|
|
|
cwd: 'build/',
|
|
|
|
|
},
|
2014-02-07 02:30:39 +08:00
|
|
|
};
|
|
|
|
|
grunt.util.spawn(spawnCmd, function() {
|
2015-02-13 04:48:11 +08:00
|
|
|
var buildSrc = 'build/react-' + grunt.config.data.pkg.version + '.tgz';
|
2015-06-18 02:43:28 +08:00
|
|
|
var buildDest = 'build/packages/react.tgz';
|
2015-02-13 04:48:11 +08:00
|
|
|
fs.rename(buildSrc, buildDest, done);
|
2014-02-07 02:30:39 +08:00
|
|
|
});
|
2013-10-23 08:59:24 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
buildRelease: buildRelease,
|
2015-06-02 07:31:08 +08:00
|
|
|
packRelease: packRelease,
|
2013-10-23 08:59:24 +08:00
|
|
|
};
|