// https://github.com/shelljs/shelljs
// 检查NodeJS和npm的版本
require('./check-versions')()html
process.env.NODE_ENV = 'production'webpack
// Elegant terminal spinner
var ora = require('ora')
var path = require('path')git
// 用于在控制台输出带颜色字体的插件
var chalk = require('chalk')github
// 执行Unix命令行的插件
var shell = require('shelljs')
var webpack = require('webpack')
var config = require('../config')web
var webpackConfig = require('./webpack.prod.conf')shell
var spinner = ora('building for production...')
spinner.start() // 开启loading动画npm
// 输出文件的目标文件夹
var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)字体
// 递归删除旧的目标文件夹动画
shell.rm('-rf', assetsPath)ui
// 从新建立文件夹
shell.mkdir('-p', assetsPath)
shell.config.silent = true
// 将static文件夹复制到输出的目标文件夹
shell.cp('-R', 'static/*', assetsPath)
shell.config.silent = false
// webpack编译
webpack(webpackConfig, function (err, stats) {
spinner.stop() // 中止loading动画
if (err) throw err// 没有出错则输出相关信息
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n')
console.log(chalk.cyan(' Build complete.\n')) console.log(chalk.yellow( ' Tip: built files are meant to be served over an HTTP server.\n' + ' Opening index.html over file:// won\'t work.\n' ))})