zoro-cli
Version:
https://github.com/vuejs/vue-cli
60 lines (49 loc) • 1.62 kB
JavaScript
const webpack = require('webpack')
const path = require('path')
const { error } = require('zoro-cli-util/logger')
const args = require('minimist')(process.argv.slice(2))
const Configurator = require('./Configurator')
const formatStats = require('./formatStats')
const { forEachPlugin } = require('./webpack.plugin')
console.log('Starting build...')
console.log('node version', process.versions.node)
// 设置默认的 NODE_ENV
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = 'production'
}
const configurator = new Configurator({ args })
const projectOptions = configurator.projectOptions
let webpackConfig = {}
if (projectOptions.target === 'app') {
webpackConfig = configurator.resolveWebpackConfig()
} else if (projectOptions.target === 'lib') {
webpackConfig = require('./resolveLibConfig.js')({
configurator,
options: projectOptions,
args,
})
}
const config = Array.isArray(webpackConfig) ? webpackConfig[0] : webpackConfig
const targetDir = config.output.path
const targetDirShort = path.relative(configurator.context, targetDir)
if (args.inspect || configurator.projectOptions.inspect) {
require('./util/inspectWebpackConfig')(webpackConfig)
}
function applyBuildDonePlugins(obj) {
forEachPlugin('build-done', apply => {
apply({ ...obj })
})
}
webpack(webpackConfig, (err, stats) => {
// stopSpinner(false)
if (err) throw err
if (stats.hasErrors()) {
error()
error('Build failed with errors.')
error()
// Uncaught Fatal Exception
process.exit(1)
}
applyBuildDonePlugins({ stats })
console.log(formatStats(stats, targetDirShort))
})