背景
近期经常遇到包版本导致的问题,之前使用过 package-lock.json
来约束版本,但总是导致一些问题或者冲突,没有多研究原因,直接在 .gitignore
把它忽略了,当时倒是没啥问题,随着一些依赖包的更新,问题出现了。。
项目中 package.json
使用了框架默认的,包版本规则基本都是^开头,所以每次 npm install
都会根据版本规则安装最新的包,不可避免出现依赖包兼容问题。
忽略lock文件会导致包自动更新问题,不忽略会导致冲突或者意外报错,怎么办?
语义化版本控制
版本号由三部分组成:主版本号
、次版本号
、补丁版本号
。变更不同的版本号,代表不同的意义
- 主版本号(major):新的架构调整,不兼容老版本
- 次版本号(minor):新增功能,兼容老版本
- 补丁版本号(patch):修复bug,兼容老版本
"dependencies": {
"signale": "1.4.0", // 固定版本号
"figlet": "*", // 任意版本(>=0.0.0)
// 匹配主要版本(>=16.0.0 <17.0.0) 两种写法效果一样
"react": "16.x",
"react": "^16.3.0",
// 匹配主要版本和次要版本(>=16.3.0 <16.4.0) 两种写法效果一样
"react-dom": "16.3.x",