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 使用 libA
和 libA
使用 libB
。我在libB
内部yarn link
,然后在libA
内部yarn link libB
。然后在api
里面我使用了yarn add ../lib/A
。那失败了。尽管使用了yarn link libB
,但我必须在libA
内使用yarn add libB
才能使其工作
所以你还需要在 libA 中执行 yarn link
inside 然后在 API 中运行 yarn link libA
以上是关于Yarn 本地包依赖项的主要内容,如果未能解决你的问题,请参考以下文章