如何通过 Yarn 使用本地路径安装软件包?找不到包裹

新手上路,请多包涵

在我的 package.json 我指向本地包 my-custom-i18n 通过它的相对路径:

包.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 注册表中显示,该包不在该注册表中。

问题

将纱线与本地包一起使用有什么变化吗?本地包是指相对路径指向的包 my-custom-i18n

原文由 michalczukm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

对于纱线版本 < 2.x

Yarn 需要前缀 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。

原文由 Piotr Lewandowski 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于纱线版本 >= 2.x (Yarn Berry)

为了引用本地包,Yarn 支持不同的 协议

  • file: 创建指定目录的副本。 When specifying relative paths (starting with ./ or ../ ) or absolute paths (starting with / ), the file: prefix can also be省略。
  • portal: 创建到指定目录的符号链接并解析其传递依赖。
  • link: 创建到指定目录的符号链接,但不解析其传递依赖。

要添加依赖项,请运行 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?

原文由 cdauth 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题