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 })