Yarn 本地包依赖项

Posted

技术标签:

【中文标题】Yarn 本地包依赖项【英文标题】:Yarn local packages dependencies 【发布时间】:2018-07-19 01:21:18 【问题描述】:

我有以下文件夹结构:

~ (user home folder)
 - api
    ...
    - package.json
 - lib
    - libA
      ...
      package.json
    - libB
      ...
      package.json

libA/package.json我有以下本地依赖

"dependencies": 
    "libB": "../libB",
  ,

所以 libA 依赖于 libB。

现在我想在api 项目中添加为本地包libA。我执行cd api && yarn add ../lib/libA 并收到以下错误/Users/a_user/libB doesn't exist。我知道 yarn 将其视为当前主管 ~/api,因此当读取 libA 的依赖项时,它会看到 ../libB 并将其翻译为 ~/libB 而不是 ~/lib/libB

没有绝对路径有没有办法实现它?

【问题讨论】:

【参考方案1】:

是的,有,使用yarn link。基本上,yarn link 允许您创建指向本地项目的符号链接。

转到文件夹libB 并运行:

yarn link

然后进入文件夹libA并运行:

yarn link libB

注意libB 必须是 libB 文件夹内 package.json 上的名称

然后您可以像往常一样要求您的libB 代码:

const libB = require('libB')

【讨论】:

非常感谢。一件事我不明白。我应该有 libA 的内部依赖项 libB 还是喜欢就足够了? 我尝试了你的建议,但是当我在 api 文件夹中执行yarn install 时得到Error: Cannot find module 'libB' 你需要在API文件夹中运行yarn link libB API 使用 libAlibA 使用 libB。我在libB 内部yarn link,然后在libA 内部yarn link libB。然后在api 里面我使用了yarn add ../lib/A。那失败了。尽管使用了yarn link libB,但我必须在libA 内使用yarn add libB 才能使其工作 所以你还需要在 libA 中执行 yarn linkinside 然后在 API 中运行 yarn link libA

以上是关于Yarn 本地包依赖项的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 Yarn 重新安装软件包?

从 CRAN 镜像安装具有依赖项的本地 R 包

yarn 如何找到作为开发依赖项安装的模块

maven依赖本地非repository中的jar包

使用 go mod 时如何向供应商添加本地依赖项

使用 SPM 在 XCode11 中添加本地依赖项