mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
dev/prod mode WIP
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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
@@ -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)
|
||||
)
|
||||
));
|
||||
|
||||
@@ -6,8 +6,9 @@ const {
|
||||
|
||||
const bundles = [
|
||||
{
|
||||
name: 'react',
|
||||
config: {
|
||||
dest: 'build/rollup/react.js',
|
||||
destDir: 'build/rollup/',
|
||||
format: 'umd',
|
||||
moduleName: 'React',
|
||||
sourceMap: false,
|
||||
|
||||
@@ -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'),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user