使用Yarn2 workspaces时能否将公共依赖统一安装在根package.json?
Yarn 2 workspaces 公共依赖安装方案解答
结论
两种安装方式都支持,优先推荐根目录全局安装eslint,更便于统一维护。
根目录单独安装方案(推荐)
你完全可以仅在根目录的package.json中安装eslint,无需在子仓库重复安装,Yarn 2的workspaces机制原生支持该用法:
- 安装操作:在根目录执行命令
yarn add -D eslint -W,其中-W是Yarn workspaces专属参数,允许在根工作区安装顶层开发依赖。 - 依赖访问规则:Yarn 2会将根目录安装的依赖提升到全局虚拟存储,所有子workspace都可以正常访问到该依赖,不需要额外配置路径。
- 配置复用:eslint规则配置也可以统一放在根目录,所有子包默认会继承根目录的
.eslintrc规则,若子包需要差异化规则,只需在子包目录下单独添加.eslintrc做局部覆盖即可。 - 优势:所有子包共用同一个eslint版本,无重复安装冗余,节省磁盘空间,后期升级eslint版本、调整全局lint规则仅需修改根目录配置,维护成本更低。
子包单独安装的适用场景
仅当出现以下需求时,才需要在对应子包单独安装eslint:
- 不同子包需要使用不同版本的eslint
- 子包需要单独对外发布,要求自身依赖声明完整
这种情况Yarn 2会自动处理依赖优先级:子包单独安装的eslint优先级高于根目录的版本,不会出现依赖冲突。
注意:无论采用哪种安装方式,子包
package.json的scripts中调用eslint都不需要额外写路径,直接写"lint": "eslint ./src"即可正常运行,Yarn 2会自动识别对应的可执行文件。
内容的提问来源于stack exchange,提问作者florian.kdrone
相关产品推荐
相关产品推荐

