npm からの移行
npm からの移行は、大抵のユーザーにとって大変容易なはずです。Yarn は npm と同じ package.json フォーマットを利用し、npm レジストリから任意のパッケージをインストールできます。
既存の npm プロジェクトで Yarn を試してみたいなら、以下のコマンドを実行するだけです:
yarn
このコマンドを実行すると、node.js module resolution algorithmと互換性のある Yarn の解決アルゴリズムが node_modules フォルダを配備します。
エラーが発生した場合は、既存の issue を確認するか、Yarn issue tracker に報告してください。
yarn もしくは yarn add <package> のどちらかを実行した場合は、Yarn は yarn.lock ファイルをパッケージのルートディレクトリに生成します。 このファイルを読んだり理解する必要はありません - ソース管理にチェックインしてください。 他の人が npm の代わりに Yarn を使用し始めた場合、その yarn.lock ファイルはあなたが持っている依存関係と正確に同じものを取得することを保証します。
ほとんどの場合、最初に yarn もしくは yarn add を実行すると上手くいくでしょう。 一部のケースでは package.json ファイルにある情報が依存関係を解消したり、Yarn が依存関係を選択する確定的な方法を得るのに十分でなく、依存関係の競合が起こる場合があります。 これは特に、時にnpm install が動作せず、開発者が頻繁に node_modules を削除して手作業で再構築しているような、大規模なプロジェクトで起こります。 そうなった場合はYarn に移行する前に、npm を使用して依存関係のバージョンをより明確にしようと試みてください。
プロジェクトの他の開発者は npm を使い続けられるので、プロジェクトの全員を同時に移行させる必要はありません。 yarn を使用する開発者は他の人と全く同じ構成を取得でき、npm を使用する開発者は 少しだけ異なる構成を取得し、それはnpm の意図した動作です。
後に、Yarn があなたに合わないと思ったら、特に変更を行うことも無く npm に戻ることができます。 プロジェクトの誰も Yarn を使用していないなら、古い yarn.lock ファイルを削除することができますが、それは必須ではありません。
現在 npm-shrinkwrap.json ファイルを使用しているなら、異なった依存関係のセットを持ってしまうことに注意してください。 Yarn が持つより決定的なアルゴリズムへの十分な情報を持っていないので、Yarn は npm shrinkwrap ファイルをサポートしません。 shrinkwrap ファイルを使用しているなら、プロジェクトの全員が同時に Yarn に移行する方が簡単かもしれません。 単に既存の npm-shrinkwrap.json ファイルを削除して、新たに作成した yarn.lock ファイルをチェックインするだけです。
CLI コマンドの比較
| npm (v5) | Yarn |
|---|---|
npm install |
yarn install |
| (N/A) | yarn install --flat |
| (N/A) | yarn install --har |
npm install --no-package-lock |
yarn install --no-lockfile |
| (N/A) | yarn install --pure-lockfile |
npm install [package] |
yarn add [package] |
npm install [package] --save-dev |
yarn add [package] --dev |
| (N/A) | yarn add [package] --peer |
npm install [package] --save-optional |
yarn add [package] --optional |
npm install [package] --save-exact |
yarn add [package] --exact |
| (N/A) | yarn add [package] --tilde |
npm install [package] --global |
yarn global add [package] |
npm update --global |
yarn global upgrade |
npm rebuild |
yarn install --force |
npm uninstall [package] |
yarn remove [package] |
npm cache clean |
yarn cache clean [package] |
rm -rf node_modules && npm install |
yarn upgrade |