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(取决于你使用哪个包管理器)来安装这些模组。