TL; DR如何在模块化项目中配置不同的“子模块”以尽可能简单地相互引用?节点/ NPM管理本地包
我试图围绕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 DIR- 运行
npm install
npm link models
- 运行
cd
到应用程序目录- 运行
npm install
npm link models
- 运行
- 开工
我想什么做的(我认为npm
应该是能够做到的事情)是:
- 克隆库
cd
到车型目录- 运行
npm install
- 运行
cd
到API目录- 运行
npm install
- 运行
cd
到应用程序目录- 运行
npm install
- 运行
- 开工
我可以写一个脚本来做到这一点,但它似乎是一个明显的用例npm
,我怀疑它可能能够做到这样的事情。我想我可能会忽略一些东西,因为我没有在文档中找到它。
真的需要有三个独立的'package.json'吗?你不应该只创建一个主'json'文件吗?我还没有处于需要的状态 –
为什么? NPM已经为你做了重复数据删除。如果这是一个项目,则不需要三个package.json文件,只需使用一个。另一方面,如果这三个独立项目是独立的并且可以各自独立发布,那么好消息是:npm已经可以自动为您执行基于链接的重复数据删除。 –
Re:多个package.json文件 - 最终,这些代码将在多个docker容器中运行,我正在寻找一种方法来确保安装不必要的依赖关系。例如,如果API容器需要应用程序容器没有的依赖项,这似乎是避免将其安装在不需要的地方的最简单方法。 – Kryten