
获得徽章 18
- 又被 npm 的语义化版本管理坑了一次:
在项目中,我使用了 npm i @babel/traverse@esm (使用了 esm 的这个 tag),在 package.json中很自然的就产生了一条:"@babel/traverse": "^7.21.4-esm.4"。
注意,默认是有 ^ 符号的。
然后发包后就出问题了:因为根据 npm 的语义化,当指定了 @babel/traverse@^7.21.4-esm.4,意味着你允许 npm 安装 @babel/traverse 的任何符合 ^7.21.4-esm.4 的版本,包括补丁版本的更新。
于是最新的 7.23.6 就被安装了。最坑的地方在于:我明明期望使用 esm 版本,而最新的是 cjs 的,导致嗝屁了。展开等人赞过24