Yarn工做区

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

如何使用工做区

在 package.json 文件中添加如下内容,接下来咱们将此目录称为 “工做区根目录”: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:spa

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

最后能够在工做区根目录中执行 yarn install 命令,若是一切正常,如今应该有一个相似下面这样的文件层次结构:code

/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能够一块儿使用这个包。ci

限制和警告

  • 包层级在工做区和用户获得的内容之间将有所不一样(工做区依赖将提高到文件系统层次结构中)。 对这个层级的假设已是危险的,由于提高过程不是标准化的,因此理论上没有什么新东西。
  • 在上面的示例中,若是 workspace-b 依赖于 workspace-a 的包,可是引用的是不一样的版本,那么依赖包将从 Github 安装,而不是从本地文件系统连接。 这是由于一些软件包实际上须要使用之前的版本,以创建新的版本(Babel 是其中之一)。
  • 在工做区中发布包时要留心。 若是你正准备发布下一个版本,而且你决定引用一个新依赖但忘了在 package.json 中声明,你的测试仍可能在本地经过(若是其余包已经把那个引用下载到了项目根目录)。 然而其余从源中拉取包的用户就不行了,因为依赖列表如今是不完整的,他们没办法下载那个新依赖。 目前没有办法在这种状况下抛出警告。
  • 工做区必须是项目根目录的子目录,咱们不能也不该当引用位于项目目录以外的工做区。
  • 工做区不支持嵌套。

连接:https://www.9xkd.com/get

相关文章
相关标签/搜索