diff --git a/Gruntfile.js b/Gruntfile.js index f578a63092..1ad097a685 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -66,7 +66,8 @@ module.exports = function(grunt) { grunt.registerTask('npm-react:release', npmReactTasks.buildRelease); grunt.registerTask('npm-react:pack', npmReactTasks.packRelease); - grunt.registerTask('npm-react-tools:pack', npmReactToolsTasks.pack); + grunt.registerTask('npm-react-tools:release', npmReactToolsTasks.buildRelease); + grunt.registerTask('npm-react-tools:pack', npmReactToolsTasks.packRelease); grunt.registerTask('version-check', versionCheckTask); @@ -220,6 +221,7 @@ module.exports = function(grunt) { 'browserify:addonsMin', 'npm-react:release', 'npm-react:pack', + 'npm-react-tools:release', 'npm-react-tools:pack', 'copy:react_docs', 'compare_size' diff --git a/grunt/tasks/npm-react-tools.js b/grunt/tasks/npm-react-tools.js index de3b2accfd..2efcd827f7 100644 --- a/grunt/tasks/npm-react-tools.js +++ b/grunt/tasks/npm-react-tools.js @@ -3,20 +3,58 @@ var fs = require('fs'); var grunt = require('grunt'); -function pack() { +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'] + args: ['pack', 'npm-react-tools'], + opts: { + cwd: 'build/' + } }; grunt.util.spawn(spawnCmd, function() { - var src = 'react-tools-' + grunt.config.data.pkg.version + '.tgz'; + var src = 'build/react-tools-' + grunt.config.data.pkg.version + '.tgz'; var dest = 'build/react-tools.tgz'; fs.rename(src, dest, done); }); } module.exports = { - pack: pack + buildRelease: buildRelease, + packRelease: packRelease }; diff --git a/npm-react-tools/README.md b/npm-react-tools/README.md new file mode 100644 index 0000000000..7c108269d9 --- /dev/null +++ b/npm-react-tools/README.md @@ -0,0 +1,23 @@ +# react-tools + +This package compliments the usage of React. It ships with tools that are often used in conjunction. + +## JSX + +This package installs a `jsx` executable that can be used to transform JSX into vanilla JS. This is often used as part of a build step. This transform is also exposed as an API. + +## Usage + +### Command Line + +```sh +jsx input > output +``` + +### API + +```js +var reactTools = require('react-tools'); + +reactTools.transform(string, options); +``` diff --git a/package.json b/package.json index 46967ab749..08ea0f9294 100644 --- a/package.json +++ b/package.json @@ -17,12 +17,10 @@ } ], "files": [ - "README.md", "main.js", "bin/jsx", "src/", - "vendor/fbtransform/", - "vendor/constants.js" + "vendor/fbtransform/" ], "main": "main.js", "bin": {