npm からの移行は、ほとんどのユーザーにとってかなり簡単なプロセスであるはずです。 Yarn は npm と同じ package.json フォーマットを使用し、npm レジストリから任意のパッケージをインストールできます。
既存の npm プロジェクトで Yarn を試してみたい場合は、次のコマンドを実行してみてください。
もしエラーが発生した場合は、既存の問題を確認するか、Yarn issue tracker に報告してください。
yarnまたはyarn add <package>を実行すると、Yarn はあなたのパッケージのルートディレクトリに yarn.lock ファイルを生成します。 このファイルを読んだり理解したりする必要はなく、ただソース管理にチェックインするだけです。 他の人が npm の代わりに Yarn を使い始めたとき、yarn.lock ファイルは彼らがあなたと同じ依存関係を正確に取得することを保証します。 場合によっては、package.json ファイル内の情報は依存関係を排除するのに十分明確ではなく、 Yarn が依存関係を選択する決定論的な方法は依存関係の衝突に遭遇することになります。 これは特に大規模なプロジェクトで起こりやすく、npm installが機能しないことがあり、開発者が頻繁にnode_modulesを削除して一から作り直すような場合に起こりがちです。
Yarn 1.7.0 では、npm で生成した package-lock.json の状態を yarn import で Yarn にインポートできます。
プロジェクトの他の開発者は npm を使い続けられるので、プロジェクトの全員が同時に変換する必要はないでしょう。 yarn を使っている開発者は全員全く同じ設定を取得し、npm を使っている開発者は若干異なる設定を取得することになりますが、これは npm の意図した動作です。
その後、Yarn が自分に合わないと判断したら、特に変更せずに npm に戻せばいいのです。 プロジェクトで誰ももう Yarn を使っていないのであれば、古い yarn.lock ファイルを削除することもできますが、その必要はありません。
現在 npm-shrinkwrap.json ファイルを使っている場合、依存関係のセットが異なることに注意してください。 Yarn は npmshrinkwrap ファイルをサポートしません。なぜなら、これらのファイルには Yarn がより決定論的なアルゴリズムを実行するのに十分な情報が含まれていないからです。 もしshrinkwrapファイルを使用しているのであれば、プロジェクトに参加している全員を同時にYarnを使用するように変換するのが簡単でしょう。 既存のnpm-shrinkwrap.jsonファイルを削除し、新しく作成したyarn.lockファイルをチェックインするだけです。
CLI コマンドの比較
| npm (v5) | Yarn |
|---|---|
npm install |
yarn add |
| (n/a) | yarn add --flat |
| (n/a) | yarn add --har |
npm install --no-package-lock |
yarn add --no-lockfile |
| (n/a) | yarn add --pure-lockfile |
npm install --save |
yarn add |
npm install --save-dev |
yarn add --dev |
| (n/a) | yarn add --peer |
npm install --save-optional |
yarn add --optional |
npm install --save-exact |
yarn add --exact |
| (n/a) | yarn add --tilde |
npm install --global |
yarn global add |
npm update --global |
yarn global upgrade |
npm rebuild |
yarn add --force |
npm uninstall |
yarn remove |
npm cache clean |
yarn cache clean |
rm -rf node_modules && npm install |
yarn upgrade |
npm version major |
yarn version --major |
npm version minor |
yarn version --minor |
npm version patch |
yarn version --patch |