我正在尝试将解决方案复制到Cory House在此nice talk中描述的Node.js中的包管理。
他的团队维护着一个名为Fusion的软件包,它引用了项目组合中使用的所有依赖项,因此每个项目只是导入这个唯一的软件包,它也应该导入所有依赖项。
我创建了一个类似的Fusion包,将所有依赖项放在那里,然后将Fusion添加到我的应用的package.json
中的依赖项部分,但我似乎无法{{ Fusion来自应用程序的依赖关系,因为它们在逻辑上安装在Fusion的require()
中。
如何使这项工作?如何在我的应用程序中使用Fusion软件包的依赖项?
答案 0 :(得分:0)
我认为实现这一目标的方法是明确地将所有软件包从Fusion重新导出到外部世界。
假设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导出所有依赖项:
// 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 :从Fusion导出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");
如果以任何一种方式完成,一切正常。 当然欢迎更优雅的解决方案。