silki
Version:
Cli tool for build react app, based on generator-react-multipage, create-react-app, roadhog. Support react multiple pages app develop.
95 lines (69 loc) • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.build = build;
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _paths = require('./utils/paths');
var _paths2 = _interopRequireDefault(_paths);
var _getConfig = require('./utils/getConfig');
var _getConfig2 = _interopRequireDefault(_getConfig);
var _applyWebpackConfig = require('./utils/applyWebpackConfig');
var _applyWebpackConfig2 = _interopRequireDefault(_applyWebpackConfig);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var rcConfig = void 0;
var config = void 0;
var argv = require('yargs').usage('Usage: roadhog build [options]').option('debug', {
type: 'boolean',
describe: 'Build without compress',
default: false
}).help('h').argv;
function build(argv) {
var paths = (0, _paths2.default)(argv.cwd);
try {
rcConfig = (0, _getConfig2.default)(process.env.NODE_ENV, argv.cwd);
} catch (e) {
console.log(_chalk2.default.red('Failed to parse .silkrc config.'));
console.log();
console.log(e.message);
process.exit(1);
}
config = (0, _applyWebpackConfig2.default)(require('./config/webpack.config.dll')(argv, rcConfig, paths), process.env.NODE_ENV);
realBuild(argv);
}
// Print out errors
function printErrors(summary, errors) {
console.log(_chalk2.default.red(summary));
console.log();
errors.forEach(function (err) {
console.log(err.message || err);
console.log();
});
}
function doneHandler(argv, err, stats) {
if (err) {
printErrors('Failed to compile.', [err]);
process.exit(1);
}
if (stats.compilation.errors.length) {
printErrors('Failed to compile.', stats.compilation.errors);
process.exit(1);
}
(0, _applyWebpackConfig.warnIfExists)();
console.log(_chalk2.default.green('Compiled successfully.'));
console.log();
}
// Create the production build and print the deployment instructions.
function realBuild(argv) {
var compiler = (0, _webpack2.default)(config);
var done = doneHandler.bind(null, argv);
compiler.run(done);
}
// Run.
if (require.main === module) {
build(_extends({}, argv, { cwd: process.cwd() }));
}