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