@kokojs/plugin-npm-duplicate
用于检测 npm 依赖包是否重复安装了多个版本。
如果白名单内的依赖被安装了多个版本,Npm Duplicate 插件会直接阻止代码编译,直到版本冲突被解决。
这个插件的主要用处是避免某些包被重复安装,尤其是单实例的包、体积较大的包。
如果需要全量分析项目中的重复依赖,可以使用 Analyze 插件
。
yarn add @kokojs/plugin-npm-duplicate --dev
安装完成后,在 koko.config.js
中添加如下配置:
module.exports = {
plugins: {
'npm-duplicate': {
packages: ['@youzan/znb'],
},
},
};
- Type:
string[]
- Default:
[]
需要被检测的包列表,如 ['lodash', 'date-fns']
。
- Type:
string
- Default: 'yarn.lock'
需要检测的 yarnLock 文件所在路径。
重复依赖有两种情况:
这种情况一般是在依赖升级过程中 yarn.lock
文件没有正确更新引起的。
直接使用 yarn-deduplicate 这个工具进行合并即可,它会自动将可匹配的版本进行合并。
# 消除所有依赖
npx yarn-deduplicate
# 消除特定重复依赖
npx yarn-deduplicate --packages @youzan/znb,@youzan/utils
对于 semver 无法匹配的情况,需要手动修改版本号范围,使之能够匹配。
如果暂时无法修改版本号范围,也可以通过 yarn 提供的 resolutions 字段来指定一个版本号。
// package.json
{
"resolutions": {
"@youzan/utils": "^3.0.0"
}
}
新春。