我正在尝试复制Node.js中的包管理解决方案,这是由科里豪斯在这个好听的谈话中描述的。
他的团队维护一个名为Fusion的包,它引用了跨项目组合使用的所有依赖项,因此每个项目只导入这个唯一的包,这个包也应该导入所有的依赖项。
我创建了一个类似的融合包,将所有的依赖项都抛到那里,然后将它添加到我的应用程序的package.json中的依赖项部分,但是我似乎无法从应用程序中获得require()的依赖项,因为它们逻辑上安装在融合的node_modules中。
我该怎么做呢?如何在我的应用程序中使用融合包的依赖关系?
发布于 2017-11-05 15:32:32
我认为实现这一点的方法是显式地将所有包从Fusion再导出到外部世界。假设融合的package.json包含以下内容:
"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:使融合导出所有依赖项:
// 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");然后,应用程序可以引用所有这些:
// App/app.js
var fusion = require("fusion");
var express = fusion.express;
var bodyParser = fusion.bodyParser;变体2:从融合导出require函数:
// Fusion/index.js
module.exports.require = _require
function _require(name) { return require(name) }它将用于导入所有依赖项:
// App/app.js
var fusion = require("fusion");
var express = fusion.require("express");
var bodyParser = fusion.require("body-parser");不管怎么做,一切都很好。当然,更优雅的解决方案是受欢迎的。
https://stackoverflow.com/questions/47122704
复制相似问题