NPM Monorepo 設定

NPM Monorepo 設定

1. 目錄結構:

//-----------start-----------
my-monorepo/
|-- packages/
| |-- my-first-package/
| | |-- index.js
| |-- my-second-package/
| | |-- index.js
|-- package.json

//------------end------------

2. 最上層套件 package.json 宣告:

//-----------start-----------
{
"name": "@dystw/dystw",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
],
"exports": {
"./my-first-package": "./packages/my-first-package/index.js",
"./my-second-package": "./packages/my-second-package/index.js"
}
}
//------------end------------

重要提示:在最上層的 package.json 中使用 exports 可以确保子模块被正确地導出,使得在外部可以像這樣引用:@dystw/my-first-package 和 @dystw/my-second-package。

3. 子套件 package.json 宣告:

my-first-package/package.json:

//-----------start-----------
{
"name": "@dystw/my-first-package",
"version": "1.0.0",
"main": "index.js"
}
//------------end------------

my-second-package/package.json:

//-----------start-----------
{
"name": "@dystw/my-second-package",
"version": "1.0.0",
"main": "index.js"
}
//------------end------------

4. 將模組推送至 Git:

//-----------start-----------
git init
git add .
git commit -m "Initial commit"
git remote add origin http://abc.com/my-monorepo.git
git push -u origin master
//------------end------------

5. 專案引用建議:

當你想在另一個專案中引用這些模組時,在該專案的 package.json 中,你可以如下所示添加依赖:

//-----------start-----------
{
"dependencies": {
"@dystw/my-first-package": "git+http://abc.com/my-monorepo.git",
"@dystw/my-second-package": "git+http://abc.com/my-monorepo.git"
}
}
//------------end------------

或直接引入最上層的套件名稱

//-----------start-----------
{
"dependencies": {
"@dystw/dystw": "git+http://abc.com/my-monorepo.git",
}
}
//------------end------------

之後,你可以執行 npm install 或 yarn install(取決於你使用哪個包管理器)來安裝這些模組。