【问题标题】:Multiple NPM repos in one GitHub repo with scoping?一个带有作用域的 GitHub 存储库中的多个 NPM 存储库?
【发布时间】:2018-02-07 10:26:38
【问题描述】:

假设我有一个客户,awesome-service,它由不同类型的服务、http-servicelog-service 等组成...

我想选择包括每个单独的服务(和特定版本),或者只需要所有 awesome-services,所以实际上我想要类似的东西:

const awesomeService = require('@awesome-service'); 
// Now awesomeService has
// awesomeService.httpService;
// awesomeService.logService;
// etc

// or individually
const httpService = require('@awesome-service/http-service');

这可能吗? package.json 和 GitHub 组织会是什么样子?也许这是 package.json?

"dependencies": {
   "awesome-service": "@awesome-service"
   // OR if individually importing them
   "http-service": "@awesome-service/http-service#1.0.0"
}

如何做到这一点,或者更确切地说,如何做到这一点?

【问题讨论】:

标签: node.js git github npm


【解决方案1】:

这可能吗?

是的,这是可能的。

package.json 和 GitHub 组织会是什么样子?

包应具有以下结构:

- awesome-service
  - index.js       // main module
  - package.json   // package.json of the main package
  - http-service
    - index.js     // implementation of `http` service
    - package.json // package.json of `http` package
  - log-service
    - index.js     // implementation of `log` service
    - package.json // package.json of `log` package

如您所见,共有三个 package.json 文件。根用于主包,其他用于每个服务。

在每个 package.json 中,将 main 字段设置为 index.js 并为每个包设置正确的名称:

{
  "name": "awesome-service",
  "main": "index.js",
  ...
}

{
  "name": "awesome-service@http-service",
  "main": "index.js",
  ...
}

{
  "name": "awesome-service@log-service",
  "main": "index.js",
  ...
}

在根包的index.js中导出带有字段的对象-required services(我没有在required中指定index.js,因为默认会加载这个模块):

module.exports = {
  httpService: require('./http-service'),
  logService: require('./log-service')
};

要单独使用这三个包,你应该将它们都添加到 npm 中,或者使用带有正确 url 的 github:

"dependencies": {
   "awesome-service": "awesome-service"
   "http-service": "awesome-service@http-service#1.0.0",
   "log-service": "git+https://github.com/yourAccount/awesome-service/log-service.git"
}

【讨论】:

  • 这不是我要求的。这不支持导入具有不同版本的单个“子”服务。即我撞到log-service 并且只想更新log-service 并保留http-service 的旧版本
猜你喜欢
  • 2021-11-03
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多