如何用Yarn安装本地路径的包?它无法找到包

时间:2016-10-18 07:59:11

标签: node.js npm yarnpkg

在我的package.json中,我指的是本地包my-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注册表中看起来就是这个包不在的地方。

问题

使用本地包装纱线有什么变化吗? 通过本地包我的意思是相对路径指向的包为my-custom-i18n

2 个答案:

答案 0 :(得分:129)

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团队知道并声明支持此行为 - reference on GitHub issue

<强>更新

v0.21.0 发布以来,不需要file:前缀。 请参阅pull-request with fixchangelog

答案 1 :(得分:0)

我尝试了使用纱线的 file: 解决方案,但从未成功。我选择了另一种直接包含包裹的路线。我能够添加一个 watch 以在文件更改时自动重建和更新浏览器。

我的情况

我有一个包含两个目录的 git 存储库:example/react-highlight-within-testarea/(下面我将简化为 mylib/)。 example/ 是一个 React 应用程序,在 example/package.json 中有一个依赖项:"mylib": "file:../mylib/" (a) 并且包含在 example/ import { MyLib } from 'mylib' 的 src/App.js

我的解决方案

  1. example/package.json 中删除 mylib

    yarn remove mylib

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

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

  3. 更改 example/src/App.js 中的包含内容。

    import { MyLib } from './mylib'

  4. mylib 中安装 watch。

    (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) 我可能也可以把它做成一个纱线脚本。

相关问题