08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / build / webpack.prod.conf.js
caibinghong on 22 Feb 2022 测试打包
// 多进程 编译所有
//parallel-webpack允许您并行运行多个Webpack构建,从而将工作分散到各个处理器上,从而有助于显着加快构建速度
const os = require('os');
const cpus  = os.cpus().length;
console.log(cpus,' Math.floor(cpus/2)||1', Math.floor(cpus/2)||1)

let webpack = require('webpack')
let argvs = (process.argv[2] || "").replace(/\s*$/g, "")
var run = require('parallel-webpack').run,
  configPath = require.resolve('./webpack.get-list.js'),
  options = {
    watch: false,
    maxRetries: 1,
    stats: false, // defaults to false
    maxConcurrentWorkers: 1,// use 2 workers  cup个数
    argv: [argvs]
  };

function notify(res) {
  //多打包时,如果其中一个模块出错,不知道是哪个模块
  console.log('\n--------编译完成------- \n');
}
let moduleList = argvs!=""?argvs.split(','):[];
let len = moduleList.length;
if (len == 0) {  
  moduleList = require('./webpack.get-module').moduleList || [];
  console.log(`=========进入全模块编译状态(${moduleList.length})模块...=============`)
  run(configPath, options, notify);
} else {
  let webpackList = require('./webpack.get-list.js');
  console.log(`=========指定--模块编译状态(${len})模块...=============`)
  webpack(webpackList, (err, stats) => {
    //这个回调一定要写,不然打包不出来
    if (err || stats.hasErrors()) {//编译错误不在 err 对象内,而是需要使用 stats.hasErrors() 单独处理
      let info ={};
      try{
         info = stats.toJson();
      }catch(e){
        info={
          errors:[]
        };
        console.log('stats.toJson()',err,stats)
      }
      // console.error(info.errors);
      for (let i = 0, l = info.errors.length; i < l; i++) {
        // console.log(chalk.red(info.errors[i].message));
        // console.error(info.errors[i].message)
        console.error(info.errors[i])
      }
    }
    // 处理完成
  })
}