如何用本地路径安装程序包? 找不到程序包

在我的 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的包。

146792 次浏览

纱线版本 < 2. x

本地包装纱线需要前缀 file:

相对路径:

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

绝对路径

yarn add file:/dev/your-project

例如,package.json中的依赖项声明如下:

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

这对纱线和 NPM 都适用。

它与 NPM 客户端不兼容,纱线团队知道并声明支持这种行为-关于 GitHub 问题的参考资料

更新:

自从 0.21.0发布以来,就不需要 file:前缀了。 参见 带修正的拉请求更改日志

我用纱线试了 file:溶液,但没有成功。我选择了一个不同的路线,包括包直接。我能够添加一个 watch自动重建和更新文件更改浏览器。

我的情况

我有一个包含两个目录的 git 存储库: 例子/测试区域内的反应-突出显示/(我将在下面简化为 mylib/)。例子/是一个反应应用程序,它在 "mylib": "file:../mylib/"(a)的 Example/package.json中具有依赖关系,在 import { MyLib } from 'mylib'Example/src/App.js中具有包含关系。

我的解决方案

  1. Example/package.json中删除 我的自由

    yarn remove mylib

  2. 让发行成为我项目的一部分。

    (cd example/src && ln -s ../../mylib/dist mylib)

  3. 更改 Example/src/App.js中的包含。

    import { MyLib } from './mylib'

  4. 我的自由中安装手表。

    (cd mylib ; yarn add watch)

  5. Mylib/package.json(b)的 scripts中添加一个 watch 命令。

    "watch": "watch 'yarn build' src",

  6. 我现在在一个终端(c)中运行这个命令。

    (cd mylib && yarn install && yarn watch &)
    (cd example && yarn install && yarn start)
    

成功

现在,每当我进行更改并将其保存到 Mylib/src/Example/src/中时,它都会被重新构建并推送到浏览器中的 React 页面。


脚注

(a)这些 before 设置是许多尝试使用 package.json 来实现此功能的尝试之一。

(b)也许有更多正确的方法来做这件事,但它为我工作。

(c)我大概也可以把这个做成一个毛线剧本。

如果您只想链接到本地包(因此本地包中的更改不需要重新安装即可获取) :

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

详情请看 纱线文档

纱线版本 > = 2.x (纱浆果)

为了参考本地软件包,纱支持不同的 协议:

  • file:创建指定目录的副本。当指定相对路径(从 ./../开始)或绝对路径(从 /开始)时,也可以省略 file:前缀。
  • 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?