我们说我有一个客户端awesome-service
,它由不同类型的服务组成,http-service
,log-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"
}
如何实现,或者更确切地说,这可以实现?
答案 0 :(得分:0)
这可能吗?
是的,这是可能的。
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
中导出带有字段的对象 - 必需的服务(我没有在需要时指定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"
}