首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点/NPM管理本地包

节点/NPM管理本地包
EN

Stack Overflow用户
提问于 2017-03-01 15:22:17
回答 1查看 262关注 0票数 0

TL;博士如何在模块化node.js项目中配置不同的“子模块”以尽可能简单地相互引用?

我正试图把我的头围绕在NPM的本地包上,特别是因为它们与一个模块化项目有关。

我正在构建一个带有前端和后端API的web应用程序。它们需要共享一个输出简单模型的包。我的项目目录结构如下所示:

代码语言:javascript
复制
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中安装副本。听起来像我所需要的,但也有一个问题:我在几个不同的地方做这个项目:我的笔记本电脑,我的办公室工作,偶尔在家。此外,其他国家今后也将对这一项目作出贡献。

我想使它尽可能简单,一个新的贡献者,以建立和运行与发展。

目前,一个新的贡献者经历了以下步骤:

  1. 克隆存储库
  2. cd进入模型dir
    1. 运行npm install
    2. npm link

  1. cd进入api dir
    1. 运行npm install
    2. npm link models

  1. cd进入应用程序dir
    1. 运行npm install
    2. npm link models

  1. 开始工作

我想做的(我认为npm应该能够做到)是:

  1. 克隆存储库
  2. cd进入模型dir
    1. 运行npm install

  1. cd进入api dir
    1. 运行npm install

  1. cd进入应用程序dir
    1. 运行npm install

  1. 开始工作

我可以编写一个脚本来完成这个任务,但这似乎是npm的一个明显的用例,我怀疑它可能有能力这样做。我想我可能忽略了一些东西,因为我没有在文档中找到它。

EN

回答 1

Stack Overflow用户

发布于 2017-03-01 15:41:01

也许有更好的方法来解决这个问题,但是..。

一种可能性是在项目的根中创建一个package.json,它处理项目的所有初始化。

代码语言:javascript
复制
package
├── package.json

并且package.json的内容没有依赖关系,而是使用来自package目录的npm install链接和安装所有子模块的依赖关系的脚本。

如果将下列内容放入package.json文件夹中的package文件夹中

代码语言:javascript
复制
{
  "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来初始化整个项目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42535579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档