[VUE] WebPack 打包后自动修改 dist 中 package.json 版本号

我们在开发 npm 包时,开发期的 package.json 通常并不一定是发布到 npm 仓库的 package.json。这种情况下每次改版本号需要改两个地方,比较麻烦。

我一般使用 webpack 进行打包,所以有了下面这个小插件。

插件源码

modify.version.plugin.js

/** 修改版本号 webpack 插件 */
function ModifyVersionPlugin(newVersion) {
this.newVersion = newVersion;
}
ModifyVersionPlugin.prototype.apply = function(compiler) {
compiler.hooks.emit.tap('ModifyVersionPlugin', function(compilation) {
let assets = compilation.assets;
let fileNames = Object.keys(assets);
let version = this.newVersion;
// 此项可以根据情况开启,用来更新源码中静态变量的值为当前版本号
// 示例: const __VERSION__ = '__package_version__'
// 打包后 __VERSION__ 变量的值将变为当前版本号
fileNames.forEach(function(fileName) {
if (fileName === 'index.js') {
let asset = assets[fileName];
let assetSource = asset.source();
// 将代码中的 __package_version__ 变量替换为版本号
let updatedSource = assetSource.replace(/__package_version__/, version);
asset.source = function() {
return updatedSource;
};
}
});
// 修改 /dist/package.json 中的版本号
try {
const file = './dist/package.json';
const fs = require('fs');
let json = JSON.parse(fs.readFileSync(file, 'utf8'));
console.log(json)
json.version = version;
fs.writeFileSync(file, JSON.stringify(json, null, 2));
} catch (e) {
console.error(e)
}
}.bind(this));
};
module.exports = ModifyVersionPlugin;

使用

  • 将上面的 modify.version.plugin.js 保存到项目 package.json 同级目录中。
  • 修改 webpack 配置,在 webpack.config.js 中添加如下代码:
const ModifyVersionPlugin = require('./modify.version.plugin.js');
...
const version = require('./package.json').version
console.log('Package version: ', version)
...
module.exports.plugins = (module.exports.plugins || []).concat([
new ModifyVersionPlugin(version),
...
])
...
posted @   我爱我家喵喵  阅读(398)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示