yarn在package.json的一些字段
强制孙依赖的版本
今天博主遇到一个棘手的问题,@vue/cli-service 依赖了一个包 portfiner@^1.0.20,但是 2 天前,这个包更新到了1.0.22,带来了一些问题。
博主第一反应就是想 yarn add portfinder@1.0.21,看看yarn可不可以复用这个版本。
但是结果却是 1.0.21 和 1.0.22 都装上了,而且 @vue/cli-service 还是依旧用的是 1.0.22 这个问题版本。
一怒之下,博主到yarn的文档随便翻了翻,结果还真有一个东西: “resolutions”:
在 package.json 定义 resolutions:
{ "name": "project", "version": "1.0.0", "dependencies": { "left-pad": "1.0.0", "c": "file:../c-1", "d2": "file:../d2-1" }, "resolutions": { "d2/left-pad": "1.1.1" } }
这样的结果是,这个项目下,所有的 d2/left-pad@1.1.1 范围内符合的,都指向这一版。
monorepo的多重依赖 --- workspace
{ "private": true, "name": "project", "version": "1.0.0", "workspaces": [ "apps/*", "packages/*" ] }
上面这里private true,会组织npm发包
我们安装依赖,只需要在项目根目录yarn一下就可以装项目里面所有依赖(包括子项目的依赖)
启动子项目:yarn workspace <name> <script>
推荐阅读:https://zhuanlan.zhihu.com/p/71385053