TL;DR如何在模块化node.js
项目中配置不同的“子模块”以尽可能简单地相互引用?
我正试图围绕 NPM 的本地包,特别是因为它们与模块化项目有关。
我正在构建一个带有前端和后端 API 的 Web 应用程序。这些需要共享一个导出简单模型的包。我的项目目录结构如下所示:
package
├── api
│ ├── dist
│ │ └── <compiled files>
│ ├── node_modules
│ │ └── ...
│ ├── package.json
│ └── src
│ └── <source files>
├── application
│ ├── dist
│ │ └── <compiled files>
│ ├── node_modules
│ │ └── ...
│ ├── package.json
│ └── src
│ └── <source files>
└── models
├── dist
│ └── <compiled files>
├── node_modules
│ └── ...
├── package.json
└── src
└── <source files>
API 和应用程序项目都将使用模型,因此我将该代码抽象为我项目中的一个单独的子模块。
我已经阅读了文档npm link
,这似乎是正确的方法,因为据我了解,它符号链接了node_modules
目录中的包。这样就可以访问当前存在的代码,而不是在node_modules
. 听起来像我需要的东西,但有一个问题:我在几个不同的地方从事这个项目:我的笔记本电脑、我的办公室,偶尔在家。此外,其他人将在未来为该项目做出贡献。
我想让新贡献者尽可能简单地启动并运行开发。
目前,一个新的贡献者经历了这些步骤:
- 克隆存储库
cd
进入模型目录- 跑
npm install
npm link
- 跑
cd
进入 api 目录- 跑
npm install
npm link models
- 跑
cd
进入应用程序目录- 跑
npm install
npm link models
- 跑
- 开工
我想做的(我认为npm
应该有能力做的)是:
- 克隆存储库
cd
进入模型目录- 跑
npm install
- 跑
cd
进入 api 目录- 跑
npm install
- 跑
cd
进入应用程序目录- 跑
npm install
- 跑
- 开工
我可以编写一个脚本来做到这一点,但这似乎是一个明显的用例npm
,我怀疑它可能能够做这样的事情。我想我可能忽略了一些东西,因为我没有在文档中找到它。