yarn.lock
を実行すると、Yarnはyarn install
ファイルを作成します。
これをリポジトリにコミットするか無視するかそれは何のため?
はい、チェックインする必要があります。 npmからの移行 を参照してください。
Yarnはあなたのパッケージのルートディレクトリ内にyarn.lockファイルを生成します。このファイルを読んだり理解したりする必要はありません。ソース管理にチェックインするだけです。
プロジェクトが何であるかによって異なります:
これについてのより詳細な説明は このGitHubの問題 にあります。Yarnの作成者の1人。言う:
Package.jsonは元の作者が望む意図されたバージョンを記述しますが、yarn.lockは与えられたアプリケーションの最後の既知の良い構成を記述します。
最上位プロジェクトのyarn.lock
-ファイルのみが使用されます。したがって、あるプロジェクトがスタンドアロンで使用され、別のプロジェクトにインストールされない限り、yarn.lock
- fileをコミットすることは意味がありません。代わりに、プロジェクトが期待する依存関係のバージョンを伝えるのは常にpackage.json
- fileになります。
私はこれらが二つの別々の質問であるのを見ます。両方に答えさせてください。
ファイルをリポジトリにコミットする必要がありますか?
はい。 ckuijjerの回答 で述べたように、 Migration Guide でこのファイルをリポジトリに含めることが推奨されています。理解するために読み続けてください。{why _あなたはそれをする必要があります。
yarn.lock
とは何ですか?
プロジェクトの正確な依存関係のバージョンと各パッケージのチェックサムを格納したファイルです。これは、依存関係に一貫性を持たせるための方法です。
なぜこのファイルが必要なのかを理解するには、最初に元のNPMのpackage.json
の背後にある問題が何かを理解する必要があります。パッケージをインストールすると、NPMは特定のリビジョン(semver)ではなく、依存関係の許容されるリビジョンの範囲を保存します。 NPMは、指定された範囲内の依存関係の最新バージョンの依存関係の更新を取得しようとします(つまり、破損しないパッチの更新)。この方法には2つの問題があります。
依存関係の作者は、実際にはプロジェクトに影響を与えるような重大な変更を導入しながら、パッチバージョンの更新をリリースするかもしれません。
異なる時間にnpm install
を実行している2人の開発者は、異なる依存関係を得ることができます。これは、2つのまったく同じ環境でバグが再現できない原因となる可能性があります。これは、たとえばCIサーバーのビルド安定性の問題を引き起こす可能性があります。
一方、糸は最大の予測可能性のルートをたどります。それはexact依存関係バージョンを保存するためのyarn.lock
ファイルを作成します。そのファイルを適切な場所に配置すると、yarn.lock
のバージョンを解決するのではなく、package.json
に格納されているバージョンが使用されます。この戦略は、上記の問題が発生しないことを保証します。
yarn.lock
は、npm-shrinkwrap.json
コマンドで作成できるnpm shrinkwrap
と似ています。これら2つのファイルの違いを説明する this answer をチェックしてください。
Yarnが独自のyarn.lockファイルをバージョン管理しているので、私はそう思うでしょう: https://github.com/yarnpkg/yarn
決定論的なパッケージ依存関係の解決に使用されます。
はい、あなたはそれをコミットするべきです。 yarn.lockファイルの詳細については、公式のドキュメントを参照してください ここ
はい! yarn.lock
をチェックインして、依存関係をインストールする開発者がまったく同じ出力を取得するようにする必要があります! npm[2016年10月に利用可能だった]を使用すると、たとえば、patch
バージョン(たとえば、1.2.0)をローカルにインストールし、新しいinstall
を実行している新しい開発者が異なるバージョン(1.2.1)を取得する場合があります。