TL;博士如何在模块化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 dir中的包进行了符号链接。这样就可以访问当前存在的代码,而不是在node_modules中安装副本。听起来像我所需要的,但也有一个问题:我在几个不同的地方做这个项目:我的笔记本电脑,我的办公室工作,偶尔在家。此外,其他国家今后也将对这一项目作出贡献。
我想使它尽可能简单,一个新的贡献者,以建立和运行与发展。
目前,一个新的贡献者经历了以下步骤:
cd进入模型dir npm installnpm link
cd进入api dir npm installnpm link models
cd进入应用程序dir npm installnpm link models
我想做的(我认为npm应该能够做到)是:
cd进入模型dir npm install
cd进入api dir npm install
cd进入应用程序dir npm install
我可以编写一个脚本来完成这个任务,但这似乎是npm的一个明显的用例,我怀疑它可能有能力这样做。我想我可能忽略了一些东西,因为我没有在文档中找到它。
发布于 2017-03-01 15:41:01
也许有更好的方法来解决这个问题,但是..。
一种可能性是在项目的根中创建一个package.json,它处理项目的所有初始化。
package
├── package.json并且package.json的内容没有依赖关系,而是使用来自package目录的npm install链接和安装所有子模块的依赖关系的脚本。
如果将下列内容放入package.json文件夹中的package文件夹中
{
"name": "package-name",
"version": "1.0.0",
"description": "Some description",
"scripts": {
"init-models": "cd ./models && npm install && npm link",
"init-api": "cd ./api && npm install && npm link",
"init-app": "cd ./application && npm install && npm link",
"postinstall": "npm run init-models && npm run init-api && npm run init-app"
}
}您只需要使用npm install来初始化整个项目。
https://stackoverflow.com/questions/42535579
复制相似问题