yarn import
`yarn.lock` ファイルを npm でインストールした既存の `node_modules` フォルダから生成します。
yarn import
このコマンドは lock ファイルと既存の依存関係ツリーとの差異を可能な限り最小化して、npm-shrinkwrap.json
に現在依存しているプロジェクトの移行を支援します。
モチベーション
現在多くのプロジェクトが npm shrinkwrap
を使用しているか、もしくは壊れやすい依存関係ツリーを持っているために node_modules
をソースコード管理下に置いています。 yarn install
が極端に異なる論理的な依存関係ツリーを生成するため、これらのプロジェクトでは簡単には Yarn に移行できません。 全部のツリーが Yarn の yarn.lock
で表現できるものではあんく、一部の有効なツリーはインストール時に自動的に排除されてしまうでしょう。 このような微妙な差異やその他の事柄が、手動での移行作業のとても大きな障壁となります。
yarn import
のねらいは、標準の require.resolve()
の解決ルールに則って 、node_modules
内で見つかるバージョンを使用して yarn.lock
ファイルを生成することによって、この挑戦の負担を軽減することです。 Yarn の解決メカニズムが既存の依存関係ツリーとの同一性を満たせない場合、警告を出力して手動で変更を確認するように通知します。 既存の node_modules
ツリーは前もって有効性をチェックされ、結果として出力される lock ファイルは yarn install
を問題(互換性の欠如、解決できない依存関係、重複の自動削除など)がなく実行できるようになっているはずです。
$ yarn import
yarn import vx.x.x
success Folder in sync.
warning Using version "2.2.4" of "lru-cache" instead of "2.7.3" for "ngstorage > grunt > minimatch"
warning Using version "2.0.6" of "readable-stream" instead of "2.2.9" for "ngstorage > karma > chokidar > readdirp"
[...]
success Saved lockfile.
✨ Done in 11.96s.