從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