dev/prod mode WIP

This commit is contained in:
Dominic Gannaway
2017-03-07 17:42:00 +00:00
parent 3c24a4ca53
commit d00cf558dc
6 changed files with 45 additions and 16 deletions
+4
View File
@@ -34,8 +34,10 @@
"babel-preset-react": "^6.5.0",
"babel-traverse": "^6.9.0",
"babylon": "6.15.0",
"boxen": "^1.0.0",
"browserify": "^13.0.0",
"bundle-collapser": "^1.1.1",
"chalk": "^1.1.3",
"coffee-script": "^1.8.0",
"core-js": "^2.2.1",
"coveralls": "^2.11.6",
@@ -74,8 +76,10 @@
"rollup-plugin-alias": "^1.2.0",
"rollup-plugin-babel": "^2.7.1",
"rollup-plugin-commonjs": "^7.0.0",
"rollup-plugin-filesize": "^1.0.1",
"rollup-plugin-inject": "^2.0.0",
"rollup-plugin-node-resolve": "^2.0.0",
"rollup-plugin-uglify": "^1.0.1",
"run-sequence": "^1.1.4",
"through2": "^2.0.0",
"tmp": "~0.0.28",
+1
View File
@@ -3,6 +3,7 @@
const devExpressionWithCodes = require('../error-codes/dev-expression-with-codes');
const babelOptsReact = {
exclude: 'node_modules/**',
plugins: [
devExpressionWithCodes, // this pass has to run before `rewrite-modules`
],
+37 -11
View File
@@ -1,12 +1,14 @@
"use strict";
const { rollup } = require('rollup');
const { resolve } = require('path');
const bundles = require('./bundles');
const babel = require('rollup-plugin-babel');
const commonjs = require('rollup-plugin-commonjs');
const alias = require('rollup-plugin-alias');
const inject = require('rollup-plugin-inject');
const filesize = require('rollup-plugin-filesize');
const uglify = require('rollup-plugin-uglify');
const chalk = require('chalk');
const boxen = require('boxen');
const { createModuleMap } = require('./moduleMap');
const { getFbjsModuleAliases } = require('./fbjs');
@@ -21,21 +23,45 @@ function getAliases(paths) {
);
}
function getPlugins(entry, babelOpts, paths) {
return [
function setDest(config, filename) {
return Object.assign({}, config, {
dest: config.destDir + filename,
});
}
function getPlugins(entry, babelOpts, paths, filename, dev) {
const plugins = [
babel(babelOpts),
inject({
'Object.assign': resolve('./node_modules/object-assign/index.js'),
}),
alias(getAliases(paths)),
commonjs(),
];
if (!dev) {
plugins.push(uglify());
}
// this needs to come last
plugins.push(filesize({
render: (options, size, gzip) => (
boxen(chalk.green.bold(`"${filename}" size: `) + chalk.yellow.bold(size) + ', ' +
chalk.green.bold('gzip size: ') + chalk.yellow.bold(gzip), { padding: 1 }
)
),
}));
return plugins;
}
bundles.forEach(({babelOpts, entry, config, paths}) => (
rollup({
function createBundle({babelOpts, entry, config, paths, name}, dev) {
const filename = dev ? `${name}.js` : `${name}.min.js`;
return rollup({
entry,
plugins: getPlugins(entry, babelOpts, paths),
plugins: getPlugins(entry, babelOpts, paths, filename, dev),
external,
}).then(({ write }) => write(config)).catch(console.error)
}).then(({ write }) => write(setDest(config, filename))).catch(console.error);
}
bundles.forEach(bundle => (
createBundle(bundle, true).then(() =>
createBundle(bundle, false)
)
));
+2 -1
View File
@@ -6,8 +6,9 @@ const {
const bundles = [
{
name: 'react',
config: {
dest: 'build/rollup/react.js',
destDir: 'build/rollup/',
format: 'umd',
moduleName: 'React',
sourceMap: false,
+1
View File
@@ -19,6 +19,7 @@ function getFbjsModuleAliases() {
'fbjs/lib/warning': resolve('./node_modules/fbjs/lib/warning.js'),
reactProdInvariant: resolve('./src/shared/utils/reactProdInvariant.js'),
'fbjs/lib/invariant': resolve('./node_modules/fbjs/lib/invariant.js'),
'object-assign': resolve('./node_modules/object-assign/index.js'),
};
}
-4
View File
@@ -18,10 +18,6 @@ function createModuleMap(paths) {
files.forEach(file => {
const moduleName = basename(file, '.js');
if (moduleName === 'ReactElementSymbol') {
console.log(file)
}
moduleMap[moduleName] = resolve(file);
});
});