转载自:https://www.cnblogs.com/ye-hcj/p/7096341.html
这是vue-cli脚手架工具的生产环境配置入口 package.json中的"build": "node build/build.js"的直接指向。

//版本检查 node的版本号  版本有要求"engines": {"node": ">= 4.0.0","npm": ">= 3.0.0"}
//立即执行
require('./check-versions')()
//process是node中的global全局对象的属性,process是node中的全局变量,env设置环境变量
process.env.NODE_ENV = 'production'
// ora是一个命令行转圈圈动画插件,好看用的
var ora = require('ora')
// rimraf插件是用来执行UNIX命令rm和-rf的用来删除文件夹和文件,清空旧的文件
var rm = require('rimraf')
// node.js路径模块 连接路径,例子:path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');// 返回: '/foo/bar/baz/asdf'var path = require('p//chalk插件,用来在命令行中输入不同颜色的文字
var chalk = require('chalk')
// 引入webpack模块使用内置插件和webpack方法
var webpack = require('webpack')
//commonJs风格,引入文件模块,引入模块分为内置模块与文件模块两种
var config = require('../config')
var webpackConfig = require('./webpack.prod.conf')
// 开启转圈圈动画
var spinner = ora('building for production...')
spinner.start()
// 调用rm方法,第一个参数的结果就是 绝对/工程名/dist/static,表示删除这个路径下面的所有文件
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
// 如果删除的过程中出现错误,就抛出这个错误,同时程序终止
if (err) throw err
// 没有错误,就执行webpack编译
webpack(webpackConfig, function (err, stats) {
// 这个回调函数是webpack编译过程中执行
spinner.stop()// 停止转圈圈动画
if (err) throw err  // 如果有错误就抛出错误
// 没有错误就执行下面的代码,process.stdout.write和console.log类似,输出对象
////process.stdout用来控制标准输出,也就是在命令行窗口向用户显示内容。它的write方法等同于console.log
process.stdout.write(stats.toString({
// stats对象中保存着编译过程中的各种消息
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'
))
})
})

最新文章

  1. 《图解HTTP》读书笔记
  2. 颜色空间变换(RGB-HSV)
  3. Eclipse 中 安装 SVN 插件
  4. 游戏 scrollView
  5. IE9中Media queries在iframe无效的解决方法
  6. IIS装好了无法访问localhost
  7. COJN 0485 800503寻找平面上的极大点
  8. 《LED调光-DMX512灯光协义接收控制》转
  9. 【Java基础】ArrayList工作原理
  10. svg 五花 元辅音 助读器
  11. goroutine 和 线程的区别
  12. 递归可视化之汉诺塔的动画实现(turtle海龟)
  13. 自学华为IoT物联网_05 能源工业物联网常见问题及解决方案
  14. [linux] 对一个虚拟机的研究
  15. 让listView gridView全部扩展开
  16. Python学习笔记(六)—元组的操作
  17. HTML5盒子模型。
  18. html2canvas 截屏 兼容手机端
  19. PHP 性能优化一
  20. socketserver模块简介

热门文章

  1. Linux CentOS 修改内核引导顺序
  2. Hourrank 21 Tree Isomorphism 树hash
  3. docker-py环境配置
  4. 蓝桥杯 第三届C/C++预赛真题(9) 夺冠概率(手工计算概率)
  5. boost-tokenizer分词库学习
  6. HibernateSessionFactory演示样例
  7. sqlmap注入教程
  8. hdu3535(AreYouBusy)
  9. Hibernate 中多对多(many-to-many)关系的查询语句
  10. 【BZOJ4624】农场种植 FFT