首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过一个包引用所有应用程序依赖项?

如何通过一个包引用所有应用程序依赖项?
EN

Stack Overflow用户
提问于 2017-11-05 14:29:51
回答 1查看 30关注 0票数 0

我正在尝试复制Node.js中的包管理解决方案,这是由科里豪斯在这个好听的谈话中描述的。

他的团队维护一个名为Fusion的包,它引用了跨项目组合使用的所有依赖项,因此每个项目只导入这个唯一的包,这个包也应该导入所有的依赖项。

我创建了一个类似的融合包,将所有的依赖项都抛到那里,然后将它添加到我的应用程序的package.json中的依赖项部分,但是我似乎无法从应用程序中获得require()的依赖项,因为它们逻辑上安装在融合的node_modules中。

我该怎么做呢?如何在我的应用程序中使用融合包的依赖关系?

EN

回答 1

Stack Overflow用户

发布于 2017-11-05 15:32:32

我认为实现这一点的方法是显式地将所有包从Fusion再导出到外部世界。假设融合的package.json包含以下内容:

代码语言:javascript
复制
"dependencies": {
    "jquery": "^3.2.1",
    "bootstrap": "^3.3.7",
    "express": "^4.16.2",
    "ejs": "^2.5.7",
    "body-parser": "^1.18.2",
    "sprintf-js": "^1.1.1"
  },

变体1:使融合导出所有依赖项:

代码语言:javascript
复制
// Fusion/index.js
module.exports.jquery = require("jquery");
module.exports.express = require("express");
module.exports.ejs = require("ejs");
module.exports.bodyParser = require("body-parser");
module.exports.sprintf = require("sprintf-js");

然后,应用程序可以引用所有这些:

代码语言:javascript
复制
// App/app.js
var fusion = require("fusion");
var express = fusion.express;
var bodyParser = fusion.bodyParser;

变体2:从融合导出require函数:

代码语言:javascript
复制
// Fusion/index.js
module.exports.require = _require
function _require(name) { return require(name) }

它将用于导入所有依赖项:

代码语言:javascript
复制
// App/app.js
var fusion = require("fusion");
var express = fusion.require("express");
var bodyParser = fusion.require("body-parser");

不管怎么做,一切都很好。当然,更优雅的解决方案是受欢迎的。

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

https://stackoverflow.com/questions/47122704

复制
相关文章

相似问题

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