ae-biu
Version:
Born For AE, Born To Do
78 lines (65 loc) • 1.95 kB
JavaScript
// @flow
import program from 'commander'
import webpack from 'webpack'
import logger from './utils/logger'
import clearLine from './utils/clear-line'
import Loading from './utils/loading'
import getWebpackConfig from './utils/get-webpack-config'
import rimraf from 'rimraf'
/**
* Usage
*/
program
.usage('[options]')
.parse(process.argv)
const args = program.args
// must under development
// for node
process.env.NODE_ENV = 'production'
// for sdp, it can be override by project
process.env.SDP_ENV = (args[0] || process.env.SDP_ENV || process.env.npm_config_sdp_env || 'test').trim() // default set to test, no why
// ensure create config after env
let webpackConfig: Object = require('./config/webpack.config.prod')
const projectConfig = getWebpackConfig()
if (typeof projectConfig === 'function') {
webpackConfig = projectConfig(webpackConfig)
} else if (projectConfig) {
webpackConfig = projectConfig
}
logger.info('Clean dist files\n')
rimraf.sync(webpackConfig.output.path)
const compiler = webpack(webpackConfig)
const loading = new Loading()
// logger.info('Compiling\n')
console.log()
loading.start()
compiler.run((err, stats) => {
loading.clear()
clearLine()
console.log()
logger.info('Webpack compile completed.\n')
if (err) {
logger.error('Webpack compiler encountered a fatal error.\n', err)
process.exit(1)
}
const jsonStats = stats.toJson()
console.log(stats.toString({
modules: false,
children: false,
chunks: false,
chunkModules: false,
colors: true
}))
if (jsonStats.errors.length > 0) {
logger.error('Webpack compiler encountered errors.\n')
console.log(jsonStats.errors.join('\n'))
process.exit(1)
} else if (jsonStats.warnings.length > 0) {
logger.warning('Webpack compiler encountered warnings.\n')
process.exit(0)
} else {
logger.success('No errors or warnings encountered.\n')
process.exit(0)
}
})