webpack plugin for version
以 webpack 插件方式执行
const WebpackAutoVersionPlugin = require('webpack-auto-version-plugin')
module.exports = {
//...
plugins: [
new WebpackAutoVersionPlugin({
// 文件名替换标记 [version] -> v1.2.2
filenameMark: options.filenameMark,
// 版权名称
copyright: options.copyright || '[webpack-plugin-auto-version]',
// 保存的时候格式化package.json的indent
space: options.space || 2,
// 是否自动清理老版本
cleanup: options.cleanup || false,
// 是否检测资源内的标签
inspectContent: options.inspectContent || !!options.template,
// 自定义资源内版本替换模板 [VERSION]version[/VERSION]
template: options.template || `[${this.copyright}]version[/${this.copyright}]`,
// 自定义忽略后缀,默认是['.html']忽略html文件打入版本文件夹
ignoreSuffix: [], // 忽略的后缀或者文件关键词
isAsyncJs: false,
htmlTempSuffix: ['.html', '.vm', '.ejs', '.handlbars']
})
]
}
版本: 1.0.0
bash 使用方法:
$ npm run build -- major # 2.0.0
$ npm run build -- minor # 1.1.0
$ npm run build -- patch # 1.0.1
options:
{
"template": "[VERSION]version[/VERSION]"
}
roadhog 初始化会在public
目录下有一个 index.html,该文件默认资源信息都是 link 和 script 都是
index,在 build 的时候,直接复制过去了,so 做法:
const WebpackPluginAutoPlugin = require('webpack-plugin-auto-version')
module.exports = (config) => {
if (process.env.NODE_ENV === 'production') {
config.plugins.push(
new WebpackPluginAutoPlugin({
isAsyncJs: true
})
)
}
return config
}
template 会被自动替换成和 package.json 对应的版本号