一、什麼是npm workspace
npm workspace 是一個用於管理多個相互依賴的 Node.js 項目的工具。從本質上講,它是一個將許多 npm 項目組織在一起的方式,而不是一個新的包管理器。npm workspace 在管理多模塊項目方面相對容易操作。
npm workspace 的最終目標是使開發人員可以只在頂層 `package.json` 文件中定義所有項目所需的依賴項和版本。這種方式可以將一組相關的模塊放在單個主要版本庫中,這些模塊可以互相引用。這將有助於簡化團隊協作,因為團隊成員無需在不同的項目之間跳轉,並且可以更容易地確保在所有項目中使用相同的依賴關係集合。
二、npm workspace 的安裝和配置
要在項目中使用 `npm workspace`,需要安裝 `npm` 版本 7.0.0 或更高版本。可以使用以下命令來檢查版本:
npm -v
或者,也可以使用以下命令來安裝 npm 的最新版本:
npm install -g npm
安裝了 `npm` 後,運行以下命令來創建一個新的 npm workspace:
mkdir my-workspace cd my-workspace npm init -y
接著使用以下命令來開啟工作區:
npm set-workspace-root .
這個命令將在你的工程目錄中根據當前的目錄結構配置 `.npmrc` 文件,如下所示:
workspaces-enabled=true
現在你就可以在 `my-workspace` 目錄內創建你的項目和子項目了。
三、如何將多個項目納入同一工作區
工作區根目錄下應該有一個空的 `package.json` 文件,表示工作區的根依賴關係,這個文件不依賴其他的平級項目。
在工程目錄中,可以通過以下命令將一個新的 node.js 項目添加到工作區中:
npm init
在新建立的項目目錄下,也需要一個 `package.json` 文件,記錄著該子項目的依賴項、版本號等信息。
將兩個項目同時安裝到工程目錄下的 node_modules 中,可以使用以下命令:
npm install
現在,兩個項目就可以互相依賴了,這個將大大提高項目中的復用度。同時,也十分適合中小團隊來管理項目。
四、npm workspace 命令的使用
npm workspace 不僅協助管理多個 node 項目,還支持簡單的腳本,從而可以在所有子項目中執行操作。以下是一些有用的命令:
- npm run -w :在指定子項目中運行指定的腳本。
- npm run –workspaces=:在符合模式的所有子項目中運行指定的腳本。
- npm install –workspace=:在指定的子項目中安裝指定的依賴關係。
- npm install –no-save:安裝所有子項目的依賴關係,但不向根級 `package.json` 添加這些依賴項。
五、如何使用 lerna 管理 npm workspace
lerna 是一個管理擁有多個 node 模塊的 Git 倉庫的工具,可以提供幫助維護項目多個組件之間的依賴關係。
lerna 主要用於管理多模塊項目中的 node 模塊版本,同時也適用於 npm workspace。啟用 lerna 十分簡單,只需要運行以下命令:
npm install --global lerna
在工作區根目錄下,有一個名為 `packages` 的目錄,這裡應該存放所有子項目,如以下示例:
my-workspace/ package.json packages/ project1/ package.json project2/ package.json
在工作區根目錄下,創建一個名為 `lerna.json` 的文件,內容如下:
{ "packages": [ "packages/*" ], "version": "independent", "npmClient": "npm" }
通過以上配置後就可以使用 `lerna` 命令管理所有子模塊了,下面是一些常用的命令:
- lerna bootstrap:安裝所有的依賴項並連接相互依賴的包。
- lerna publish:將更改部署到 npm,使用 「version」 欄位自動確定要發行的軟體包版本。
- lerna exec:在所有子包中執行一條給定的命令,並在成功時返回 0。
- lerna add:為指定的軟體包安裝和保存 npm 包。
六、小結
通過使用 npm workspace,我們可以更輕鬆地在一個像樣的項目中組織和管理多個 node 模塊。它不僅提高了協作效率,而且使我們的項目更加整潔、有序。 lerna 工具進一步簡化了多個子項目的操作,提高了工作完成速度。下次你遇到需要同時管理多個 node 項目時,記得使用npm workspace加快開發效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200299.html