原文:https://yarn.bootcss.com/docs/migrating-from-npm/
對於大多數用戶來說從npm遷移到yarn是個簡單的過程。yarn 可以使用和npm相同格式的 package.json,並且可以從你npm註冊表中安裝任何依賴包 。
如果你想在現有的npm項目上運行yarn,試着運行:
yarn
你的node_modules文件夾將會兼容yarn的分辨率算法和node.js模塊的分辨率算法。
如果你的項目出錯,請查看現有的issue,或者將問題提交到issue tracker。
當你運行yarn
或者yarn add [package]
時,yarn會在你安裝包的根目錄下生成一個yarn.lock文件。你需要閱讀或者去理解這個文件,只需要檢查它是否已經在源代碼管理裏面。當其他人使用yarn代替npm
時,yarn.lock文件會確保他們能精確獲取和你相同的依賴。
在大多數情況下,第一次運行yarn
或者 yarn add
命令纔會起作用。相同的情況下,package.json文件中的信息並不明確,無法消除依賴關係,而唯一明確的方式是yarn選擇的依賴會運行到依賴衝突中去。
特別在大型項目中,有時候npm安裝不起作用,並且開發人員頻繁移除node_modules
和從頭開始重建。如果發生這種情況,嘗試使用npm
讓依賴的版本更明確,然後再換成yarn。
Yarn從版本1.7.0起,你可以通過使用yarn import,將npm生成的package-lock.json的狀態導入到Yarn。
項目中的其他開發人員可以繼續使用npm,所以你不需要讓項目中的每個人去同時轉換成使用yarn。使用yarn的開發人員將會獲取到完全相同的配置,使用npm的開發人員可能會獲取到在npm預期下稍微不同的配置。
當你覺得yarn並不合適的時候,你可以重新使用npm並且不需要做其他特殊的改變。如果項目中沒有人使用yarn的時候,你可以選擇是否刪除你舊的yarn.lock文件,都不影響使用。
當你正在使用 npm-shrinkwrap.json文件時,請意識到你看你會得到不要的依賴集。yarn不會提供npm的shrinkwrap文件,因爲他們沒有租後的信息去支持yarn的更多確定性算法。如果你使用的是shrinkwrap文件,則可以更容易地去轉換項目中每個人同時使用yarn,只需要移除你現有的npm-shrinkwrap.json 文件並且檢查新創建的yarn.lock文件
# CLI commands comparison
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 add --force |
npm uninstall [package] |
yarn remove [package] |
npm cache clean |
yarn cache clean [package] |
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 |