乐趣区

关于yarn:Yarn工作区

本节咱们学习 Yarn 工作区,什么是工作区呢?工作区是设置软件包体系结构的一种新形式,默认状况下从 Yarn 1.0 开始应用。咱们能够应用这种形式装置多个软件包,也就是只须要执行一次 yarn install 命令便能够将所有依赖包全副装置。

如何应用工作区

在 package.json 文件中增加以下内容,接下来咱们将此目录称为“工作区根目录”:

{
    "private": true,
    "workspaces": ["workspace-a", "workspace-b]
}

其中 private:true 是必填项,工作区并不是要公布的,因为增加了此安全措施来确保没有任何货色能够意外地裸露它们。

创立这个文件之后,咱们须要在创立两个新的子文件夹:workspace-a 和 workspace-b。在每个文件夹外面,创立一个具备以下内容的 package. json 文件:

workspace-a/package.json:

{
  "name": "workspace-a",
  "version": "1.0.0",

  "dependencies": {"cross-env": "5.0.5"}
}

workspace-b/package.json:

{
    "name": "workspace-b",
    "version": "1.0.0",
    
    "dependencies": {
        "cross-env": "5.0.5",
        "workspace-a": "1.0.0"
    }
}

最初能够在工作区根目录中执行 yarn install 命令,如果一切正常,当初应该有一个相似上面这样的文件层次结构:

/package.json
/yarn.lock

/node_modules
/node_modules/cross-env
/node_modules/workspace-a -> /workspace-a

/workspace-a/package.json
/workspace-b/package.json

workspace-b 须要一个在 workspace-a 中的文件,当初将间接应用以后我的项目外部的文件,而不是从 Github 下面获取。cross-env 包已正确去重并放在我的项目的根目录下,让 workspace-a 和 workspace- b 能够一起应用这个包。

限度和正告

  • 包层级在工作区和用户失去的内容之间将有所不同(工作区依赖将晋升到文件系统层次结构中)。对这个层级的假如曾经是危险的,因为晋升过程不是标准化的,所以实践上没有什么新货色。
  • 在下面的示例中,如果 workspace-b 依赖于 workspace-a 的包,然而援用的是不同的版本,那么依赖包将从 Github 装置,而不是从本地文件系统链接。这是因为一些软件包实际上须要应用以前的版本,以建设新的版本(Babel 是其中之一)。
  • 在工作区中公布包时要留心。如果你正筹备公布下一个版本,并且你决定援用一个新依赖但忘了在 package.json 中申明,你的测试仍可能在本地通过(如果其余包曾经把那个援用下载到了我的项目根目录)。然而其余从源中拉取包的用户就不行了,因为依赖列表当初是不残缺的,他们没方法下载那个新依赖。目前没有方法在这种状况下抛出正告。
  • 工作区必须是我的项目根目录的子目录,咱们不能也不该当援用位于我的项目目录之外的工作区。
  • 工作区不反对嵌套。

链接:https://www.9xkd.com/

退出移动版