Files
react/grunt/tasks/npm-react-tools.js
Paul O’Shannessy 520c4f96d4 Move react-source gem out of project root
Now it requires a build step. At least the confusing lib directory is
gone though.
2014-07-21 22:56:32 -07:00

61 lines
1.4 KiB
JavaScript

'use strict';
var fs = require('fs');
var grunt = require('grunt');
var src = 'npm-react-tools';
var dest = 'build/npm-react-tools/';
function buildRelease() {
grunt.file.exists(dest) && grunt.file.delete(dest);
// read our required files from package.json
var pkgFiles = grunt.config.data.pkg.files;
// copy all files from src first, includes custom README
var mappings = grunt.file.expandMapping('**/*', dest, {cwd: src});
// make sure we also get package.json
pkgFiles.push('package.json');
pkgFiles.map(function(file) {
if (grunt.file.isDir(file)) {
mappings = mappings.concat(grunt.file.expandMapping(file + '**/*', dest));
} else {
mappings.push({src: [file], dest: dest + file});
}
});
mappings.forEach(function(mapping) {
var src = mapping.src[0];
var dest = mapping.dest;
if (grunt.file.isDir(src)) {
grunt.file.mkdir(dest);
} else {
grunt.file.copy(src, dest);
}
});
}
function packRelease() {
/*jshint validthis:true */
var done = this.async();
var spawnCmd = {
cmd: 'npm',
args: ['pack', 'npm-react-tools'],
opts: {
cwd: 'build/'
}
};
grunt.util.spawn(spawnCmd, function() {
var src = 'build/react-tools-' + grunt.config.data.pkg.version + '.tgz';
var dest = 'build/react-tools.tgz';
fs.rename(src, dest, done);
});
}
module.exports = {
buildRelease: buildRelease,
packRelease: packRelease
};