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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM