分析vuex源码,找到src/index.js,我们发现有这样子的段代码:
export default {
...
version: '__VERSION__',
...
}
__VERSION__很明显是一个字符串,肯定是要正行替换的,接着我们又找到build/configs.js
const config = {
input: {
input: opts.input,
plugins: [
replace({
__VERSION__: version
}),
buble()
]
},
output: {
banner,
file: opts.file,
format: opts.format,
name: 'Vuex'
}
}
这里用了rollup的replace插件,将__VERSION__替换为变量version,接着我们查version从哪来?
const version = process.env.VERSION || require('../package.json').version
这里有两个来源,一个是node的环境变量,一个是拿package.json的version。
最后总结一下:
vuex代码里的version值来源于package.json定义的version。代码里version先用固定的字符串,然后构建的时候进行替换,这样子的好处是:npm的版本号和代码里的版本可以统一管理。