如何通过Yarn安装带有本地路径的软件包?找不到包


99

在我中,package.jsonmy-custom-i18n通过其相对路径指向本地包:

package.json

"dependencies": {
 "core-js": "^2.4.1",
 "my-custom-i18n": "./../MyProject.Shared/myproject-i18n",
 "rxjs": "5.0.0-beta.12",
 ...
}

npm install 正确安装软件包,但是 yarn有问题,根本找不到此软件包:

纱线产量

$ yarn
yarn install v0.15.1
info No lockfile found.
[1/4] Resolving packages...
error Couldn't find package "myproject-i18n" on the "npm" registry.
info Visit http://yarnpkg.com/en/docs/cli/install for documentation about this command.

我看到它看起来像 npm注册表中,该程序包不存在。

在本地包装中使用yarn是否有任何变化?本地包是指相对路径指向的包my-custom-i18n

Answers:


195

纱线需要file:本地包的前缀。

对于相对路径:

yarn add file:./../your-project

对于绝对路径

yarn add file:/dev/your-project

以您的示例为例,依赖项package.json将声明如下:

 "my-custom-i18n": "file:./../MyProject.Shared/myproject-i18n",

这也适用于Yarn和NPM。

它与NPM客户不兼容,Yarn小组意识到并声明支持此行为- 有关GitHub问题的参考

更新:

v0.21.0版本开始,file:不需要前缀。请参阅带有fixchangelog的pull-request


1
谢谢,工作就像一种魅力。但是,如果现在它与npm client不兼容-我npm将按原样离开:) PS我的想法是yarn仅在本地使用,而无需转换整个团队和项目。所以..我不得不等到支持为止:)
michalczukm

3
确保清除缓存。因为yarn总是先尝试缓存版本
Bo Chen

5
+1更新!删除file:前缀解决了我们yarn install在Windows上的哪里会./在相对文件路径中添加前缀的问题,但yarn install在macOS上会删除它。
Magne

绝对路径对我不起作用。它可以用于安装,但是由于某种原因它正在寻找相对路径,但是yarn.lock具有绝对路径,所以转储将失败。
pixelearth

1
这似乎与纱线1.17.3file:前缀仍然是在下列情况下必须的:比方说,你有包bar具有本地依赖性./dependencies/xyz。如果另一个软件包foo正在使用package bar,它将尝试./dependencies/xyz相对于foo目录而不是相对于bar目录进行解析。更改对file:./dependencies/xyz问题的依赖性后,问题得到解决。
David Callanan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.