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

原文地址:https://www.cnblogs.com/amiezhang/p/11379747.html