可直接修改的方式
{
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;
})
}