146

在我的我通过它的相对路径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.

4

3 回答 3

271

对于纱线版本 < 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 。

于 2016-10-18T19:20:39.407 回答
6

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

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

查看更多关于纱线文档

于 2021-09-20T18:18:45.633 回答
1

我用纱线尝试了file:解决方案,但从未让它发挥作用。我选择了直接包含包裹的不同途径。我能够添加一个watch在文件更改时自动重建和更新浏览器。

我的情况

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

我的解决方案

  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. scriptsmylib/package.json (b)中添加 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) 这些之前的设置是使用 package.json 来完成这项工作的众多尝试之一。

(b) 可能有更正确的方法可以做到这一点,但它对我有用。

(c) 我可能也可以把它做成一个纱线脚本。

于 2021-02-18T13:48:50.407 回答