webpack打包时修改package.json的版本号,并输出相关版本

可直接修改的方式

{
  plugins: [
    function() {
      // 修改package.json中的版本号
      this.plugin('done', function() {
        const pkgPath = path.join(__dirname, '/../package.json');
        let pkg = fs.readFileSync(pkgPath);
        pkg = JSON.parse(pkg);
        pkg.version = '1.0.1';
        fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
      });
    },

    new webpack.DefinePlugin({
      'process.env.MY_VERSION': JSON.stringify(require('../package.json').version)
      // 项目中使用 process.env.MY_VERSION 输出
    })
  ];
}

chainWebpack方式

import path from 'path';
import fs from 'fs';
import moment from 'moment';
import { version } from '../src/defaultSettings';

const CurrentVersion = `${version}.${moment().format("YYMMDD.HHmmss")}`;

const setPackageJsonVersion = () =>{
  const pkgPath = path.join(__dirname, '/../package.json');
  let pkg = fs.readFileSync(pkgPath);
  pkg = JSON.parse(pkg);
  pkg.version = CurrentVersion;
  fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
}

export default config => {
  config.plugin('define').tap( args => {
    if(process.env.NODE_ENV !== 'development'){
      setPackageJsonVersion();
      args[0].VERSION = JSON.stringify(CurrentVersion);   // 方式1:直接访问VERSION
      args[0]['process.env.VERSION'] = JSON.stringify(CurrentVersion);    // 方式2:通过process.env.VERSION访问
    }else{
      args[0].VERSION = JSON.stringify(version);
      args[0]['process.env.VERSION'] = JSON.stringify(version);
    }
    return args;
  })
}
posted @ 2019-07-29 19:23  adoctors  阅读(6314)  评论(0编辑  收藏  举报