mic*_*ukm 79 node.js npm yarnpkg
在我的package.json指向本地包my-custom-i18n的相对路径:
"dependencies": {
"core-js": "^2.4.1",
"my-custom-i18n": "./../MyProject.Shared/myproject-i18n",
"rxjs": "5.0.0-beta.12",
...
}
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
我看到它在npm注册表中看起来,这个包不存在.
使用当地包装纱线有什么变化吗?通过本地包我的意思是相对路径指向的包my-custom-i18n.
Pio*_*ski 157
纱线需要file:本地包装的前缀.
对于相对路径:
yarn add file:./../your-project
Run Code Online (Sandbox Code Playgroud)
对于绝对路径
yarn add file:/dev/your-project
Run Code Online (Sandbox Code Playgroud)
对于您的示例,依赖项package.json将声明如下:
"my-custom-i18n": "file:./../MyProject.Shared/myproject-i18n",
Run Code Online (Sandbox Code Playgroud)
这也适用于Yarn和NPM.
它与NPM客户端不兼容,Yarn团队知道并声明支持此行为 - 参考GitHub问题.
更新:
自v0.21.0发布以来,file:不需要前缀.请参阅带有修复和更改日志的pull-request.
cda*_*uth 40
为了引用本地包,Yarn 支持不同的协议:
\nfile:创建指定目录的副本。这意味着如果您对本地包进行更改,则需要yarn install再次运行以复制其新版本。当指定相对路径(以./或开头../)或绝对路径(以 开头/)时,file:也可以省略前缀。portal:创建到指定目录的符号链接并解决其传递依赖关系。link:创建到指定目录的符号链接,但不解析其传递依赖项。令人困惑的是,这相当于 NPM\xe2\x80\x99sfile:协议。要添加依赖项,请运行yarn add your-project@file:../your-project.
尝试运行yarn add file:../your-project(不带your-project@前缀)将导致以下错误:Usage Error: The file:../your-project string didn\'t match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?。
不同协议之间的一个重要区别是它们解决依赖关系的方式。让\xe2\x80\x99s 说你有一个a依赖于本地包的包b。在link:模式下,您必须yarn install在 中运行b,而在portal:和file:模式下,yarn install将a安装b\xe2\x80\x99s 依赖项,就像安装任何其他依赖项一样。如果两个包都依赖于 library mylib,则在link:模式下,库将被复制为a/node_modules/mylib和b/node_modules/mylib,这可能会导致某些库出现问题(因为缓存可能会重复,并且instanceof由于构造函数是重复的,因此运算符不会按预期工作\xe2\x80\x99)。因此,我始终建议使用portal:本地依赖项并清除依赖项node_modules的文件夹b。
mr.*_*rre 29
如果您只想链接到本地软件包(因此无需重新安装即可拾取本地软件包中的更改):
yarn add link:./../your-project
Run Code Online (Sandbox Code Playgroud)
查看更多关于纱线文档