@area17/a17-boilerplate
Version:
The official AREA 17 boilerplate
59 lines (51 loc) • 1.88 kB
JavaScript
const path = require('path');
const spawn = require('cross-spawn');
const chalk = require('chalk');
const utils = require('../utils');
const createLogger = require('logging').default;
const relativePath = __dirname.replace(process.cwd(), '.');
const argv = require('minimist')(process.argv.slice(2));
const logger = createLogger('Bundle');
// use webpack to handle script task
if (argv.watch) {
logger.info('Starting Bundle in watch mode');
// Webpack in watch mode (and development mode)
// webpack --config ../webpack.config.js --mode=development --watch --colors
const ls = spawn(
utils.resolveBin('webpack'),
[].concat(
['--config'],
[path.join(relativePath, '../webpack.config.js')],
[argv.production ? '--mode=production' : '--mode=development'],
[argv.verbose ? '--verbosemode=true' : '--verbosemode=false'],
['--watch'],
['--colors']
)
);
ls.stdout.on('data', (data) => {
logger.info(`${data}`);
});
} else {
logger.info('Starting Scripts & Styles');
// Webpack in development (a17-bp bundle) or production mode (a17-bp bundle --production)
// webpack --config ../webpack.config.js --mode=production --colors
let result = spawn.sync(
utils.resolveBin('webpack'),
[].concat(
['--config'],
[path.join(relativePath, '../webpack.config.js')],
[argv.production ? '--mode=production' : '--mode=development'],
[argv.verbose ? '--verbosemode=true' : '--verbosemode=false'],
['--colors']
),
{stdio: 'inherit'}
);
if (result.status !== 0) {
// process.stderr.write(result.stderr);
process.stdout.write(chalk.red(result.stdout));
logger.error('Failed Scripts & Styles');
// process.exit(result.status);
} else {
logger.info(chalk.green('Succeed Scripts & Styles'));
}
}