mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
"use strict";
|
|
|
|
const { rollup } = require('rollup');
|
|
const bundles = require('./bundles');
|
|
const babel = require('rollup-plugin-babel');
|
|
const commonjs = require('rollup-plugin-commonjs');
|
|
const alias = require('rollup-plugin-alias');
|
|
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');
|
|
|
|
const external = [
|
|
'fbjs/lib/warning',
|
|
];
|
|
|
|
function getAliases(paths) {
|
|
return Object.assign(
|
|
createModuleMap(paths),
|
|
getFbjsModuleAliases()
|
|
);
|
|
}
|
|
|
|
function setDest(config, filename) {
|
|
return Object.assign({}, config, {
|
|
dest: config.destDir + filename,
|
|
});
|
|
}
|
|
|
|
function getPlugins(entry, babelOpts, paths, filename, dev) {
|
|
const plugins = [
|
|
babel(babelOpts),
|
|
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;
|
|
}
|
|
|
|
function createBundle({babelOpts, entry, config, paths, name}, dev) {
|
|
const filename = dev ? `${name}.js` : `${name}.min.js`;
|
|
|
|
return rollup({
|
|
entry,
|
|
plugins: getPlugins(entry, babelOpts, paths, filename, dev),
|
|
external,
|
|
}).then(({ write }) => write(setDest(config, filename))).catch(console.error);
|
|
}
|
|
|
|
bundles.forEach(bundle => (
|
|
createBundle(bundle, true).then(() =>
|
|
createBundle(bundle, false)
|
|
)
|
|
));
|