私はこれらが1つの2つの別々の質問だと思います。両方にお答えしましょう。
ファイルをリポジトリにコミットする必要がありますか?
はい。ckuijjerの回答で述べたように、移行ガイドでこのファイルをリポジトリに含めることをお勧めします。理由を理解するために読んでくださいそれを行う必要がある。
なにyarn.lock
?
これは、プロジェクトの正確な依存関係のバージョンと各パッケージのチェックサムを格納するファイルです。これは、依存関係に一貫性を提供する糸の方法です。
このファイルが必要な理由を理解するには、最初に元のNPMの背後にある問題が何であったかを理解する必要がありますpackage.json
。パッケージをインストールすると、NPMは特定のリビジョン(サーバー)ではなく、依存関係の許可されたリビジョンの範囲を保存します。NPMは、指定された範囲内の依存関係の最新バージョンの依存関係をフェッチしようとします(つまり、互換性のないパッチ更新)。このアプローチには2つの問題があります。
依存関係の作成者は、実際にプロジェクトに影響を与える重大な変更を導入しながら、パッチバージョンの更新をリリースする場合があります。
npm install
異なる時間に実行されている2人の開発者は、異なる依存関係のセットを取得する場合があります。これにより、まったく同じ2つの環境でバグを再現できなくなる可能性があります。これにより、たとえばCIサーバーのビルド安定性の問題が発生する可能性があります。
一方、糸は最大の予測可能性のルートをとります。依存関係yarn.lock
の正確なバージョンを保存するファイルを作成します。そのファイルを適所に配置するとyarn.lock
、からのバージョンを解決する代わりに、に保存されているバージョンが使用されますpackage.json
。この戦略により、上記の問題が発生しないことが保証されます。
yarn.lock
コマンドnpm-shrinkwrap.json
で作成できるものと似ていますnpm shrinkwrap
。これらの2つのファイルの違いを説明するこの回答を確認してください。