'use strict' require('./check-versions')() process.env.NODE_ENV = 'production' process.env.NODE_ENV_SELF = 'test' const ora = require('ora') const rm = require('rimraf') const path = require('path') const chalk = require('chalk') const webpack = require('webpack') const config = require('../config') const webpackConfig = require('./webpack.prod.conf') const configFilePath = './static/config.js' const spinner = ora('building for production...') spinner.start() //读取配置文件 const CONFIG_ENV = require('../config/test.env') const fs = require('fs') //组装配置文件内容 let CONFIG_ENV_STRING = ''; for (let i in CONFIG_ENV) { CONFIG_ENV_STRING += i + ':' + CONFIG_ENV[i] + ',' } const BUILD_TEST = `let config={${CONFIG_ENV_STRING}};module.exports = config;` fs.writeFileSync(configFilePath, BUILD_TEST) rm(path.join(config.build_test.assetsRoot, config.build_test.assetsSubDirectory), err => { if (err) throw err webpack(webpackConfig, (err, stats) => { spinner.stop() if (err) throw err process.stdout.write(stats.toString({ colors: true, modules: false, children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. chunks: false, chunkModules: false }) + '\n\n') if (stats.hasErrors()) { console.log(chalk.red(' Build failed with errors.\n')) process.exit(1) } //删除配置文件 fs.unlinkSync(configFilePath); 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' )) }) })