從npm遷移
對大多數人而言,從 npm 遷移過來應該是一個相當簡單的過程,Yarn 可以使用與 npm 同樣的 package.json
,也同樣的能自 npm 安裝套件。
如果你想要在現有 npm 專案嘗試 Yarn ,請試著執行:
yarn
這將使用 Yarn 與 node.js 解析算法相容的演算法来放置你的node_modules
目錄。
如果你遇到錯誤,請檢查現有的問題或向 Yarn 問題追蹤系統報告。
執行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 並不支援 npm shrinkwrap 檔,因為檔案中並沒有足夠的訊息來完成 Yarn 的確定性演算法。 所以如果你的專案正在使用 shrinkwrap 檔案,那麼讓所有人都同時遷移到 Yarn 可能會更容易點。 只要刪除 npm-shrinkwrap.json
檔案,並提交新創建的 yarn.lock
檔即可。
CLI 指令比較
npm (v5) | Yarn |
---|---|
npm install |
yarn install |
(不適用) | yarn install --flat |
(不適用) | yarn install --har |
npm install --no-package-lock |
yarn install --no-lockfile |
(不適用) | yarn install --pure-lockfile |
npm install [package] |
yarn add [package] |
npm install [package] --save-dev |
yarn add [package] --dev |
(不適用) | yarn add [package] --peer |
npm install [package] --save-optional |
yarn add [package] --optional |
npm install [package] --save-exact |
yarn add [package] --exact |
(不適用) | 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 |