build 文件夹中的 build.js
1 // bulid.js是webpack的打包文件,通过配置package.json中的script来执行脚本。命令号npm run build即运行node build/build.js 2 'use strict' 3 require('./check-versions')() // 检查node+npm的版本,引用./check-versions.js文件 4 5 6 //process.env是一个包含用户环境信息的对象 NODE_ENV是用户自定义的变量,用来判断是开发环境还是生产环境 7 process.env.NODE_ENV = 'production' 8 9 const ora = require('ora') //ora:https://www.npmjs.com/package/ora ora包用于显示加载中的效果,类似于前端页面的loading效果 10 const rm = require('rimraf') //rimraf模块 以包的形式包装rm -rf命令,用来删除文件和文件夹的,不管文件是否为空 11 const path = require('path') //导入node的path模块 12 const chalk = require('chalk') //地址:https://www.npmjs.com/package/chalk 导入chalk模块 用来改变文字颜色 13 const webpack = require('webpack') //引入webpack模块 14 const config = require('../config') 15 const webpackConfig = require('./webpack.prod.conf') 16 17 const spinner = ora('building for production...') // 实现loading的模块 18 spinner.start() //开始动画 19 20 //rm方法删除static文件夹 21 //path.join是将路径片段以'\'连接成新的路径,任何一个路径片段有错误就会报错 22 rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 23 if (err) throw err 24 25 //构建webpackc 26 webpack(webpackConfig, (err, stats) => { 27 spinner.stop() //停止动画 28 if (err) throw err 29 30 //process.stdout.write是标准输出,相当于console.log 31 process.stdout.write(stats.toString({ 32 colors: true, //增加控制卡颜色开关,即显示不同颜色的字体 33 modules: false, //是否增加内置模块信息 34 children: false, //如果您使用的是 ts-loader,将其设置为true将使TypeScript错误在构建过程中出现. 35 chunks: false, //允许较少的输出 36 chunkModules: false //不将内置模块的信息加到包信息 37 }) + '\n\n') 38 39 if (stats.hasErrors()) { 40 console.log(chalk.red(' Build failed with errors.\n')) 41 42 //执行失败 43 process.exit(1) 44 } 45 46 // 编译退出 47 console.log(chalk.cyan(' Build complete.\n')) 48 console.log(chalk.yellow( 49 ' Tip: built files are meant to be served over an HTTP server.\n' + 50 ' Opening index.html over file:// won\'t work.\n' 51 )) 52 }) 53 })