Yarnによるローカルパスでパッケージをインストールする方法 パッケージが見つかりませんでした


99

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

回答:


195

Yarnはfile:ローカルパッケージのプレフィックスを必要とします。

相対パスの場合:

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

絶対パスの場合

yarn add file:/dev/your-project

あなたの例では、依存関係はpackage.json次のように宣言されます:

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

これは糸とNPMの両方でも機能します。

これはNPMクライアントとの互換性がないため、Yarnチームはこの動作をサポートすることを認識および宣言しています-GitHubの問題のリファレンス

更新:

v0.21.0以降のリリースでは、file:プレフィックスは不要です。fixchangelogのあるプルリクエストをご覧ください。


1
おかげで、魅力のように動作します。しかし、それが今のところnpmクライアントと互換性がない場合-私はそのままにnpmしておきます:) PS私のアイデアは、yarnチームとプロジェクト全体を変換せずにローカルでのみ使用することでした。ですから、これがサポートされるまで待つ必要があります:)
michalczukm 2016年

3
必ずキャッシュをクリアしてください。糸は常に最初にキャッシュバージョンを試すため
Bo Chen

5
更新の+1!file:接頭辞を削除するとyarn install、Windows では./相対ファイルパスに接頭辞が追加されていましたがyarn install、macOSでは削除されるという問題が解決されました。
マグネ

絶対パスではうまくいきませんでした。インストールでは機能しますが、どういうわけかそれは相対パスを探していましたが、yarn.lockには絶対パスがあったため、トランスパイリングは失敗しました。
pixelearth

1
以下の状況では、yarn 1.17.3file:接頭辞がまだ必要であると思われます。barローカル依存関係のあるパッケージがあるとします./dependencies/xyz。別のパッケージfooがpackage を使用している場合、ディレクトリではなくディレクトリを基準にbar解決を試みます。問題への依存関係を変更した後、解決されました。./dependencies/xyzfoobarfile:./dependencies/xyz
David Callanan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.