注意:您可以通过运行npm install hotplate
. 我正在写热板,一个基于插件的简单模块:
https://github.com/mercmobily/hotplate
它基本上是一个小模块,然后是大量加载的“插件”模块。请注意,由于这个巨大的文件系统,重新洗牌热板目前无法正常工作。
现在......基本上结构是:
hotplate
|
- hotplate.js
- package.json
- node_modules
|
- hotCoreClientFiles
- hotCorePage
- hotCoreSharedCode
- hotDojoAuth
...
Hotplate 然后加载相关的“插件”(取决于用户想要做什么)等。这些插件将与主模块捆绑在一起。现在......我非常痛苦地弄清楚如何自动加载插件的依赖项。这就是 package.json 的样子:
{
"name": "hotplate",
"description": "Hotplate SaaS development framework",
"version": "0.0.13",
"private": false,
"dependencies": {
"express": "3.x",
"async": "*",
"hotCoreClientFiles": "*",
[...]
"hotDojoSubmit": "*",
"hotDojoWidgetHooks": "*",
"hotDojoWidgets": "*",
"hotMongoAuth": "*",
"hotMongoCometMessages": "*",
"hotMongoLogger": "*"
},
"bundleDependencies": [
"hotCoreClientFiles",
[...]
"hotDojoSubmit",
"hotDojoWidgetHooks",
"hotDojoWidgets",
"hotMongoAuth",
"hotMongoCometMessages",
"hotMongoLogger"
],
}
基本上,一些子模块也有依赖关系(在他们自己的 package.json 文件中概述);安装后,结果如下:
/home/chiara
└─┬ hotplate@0.0.12
├── async@0.2.6
├─┬ express@3.1.0
[...]
├── hotCoreClientFiles@0.0.4
├── hotCoreCommonValidators@0.0.4
├── hotCoreError@0.0.4
[...]
├── hotDojoWidgets@0.0.4
├─┬ hotMongoAuth@0.0.4
│ ├── UNMET DEPENDENCY allhttperrors *
│ ├── UNMET DEPENDENCY bcrypt *
│ ├── UNMET DEPENDENCY hat *
│ ├── UNMET DEPENDENCY mongowrapper *
│ └── UNMET DEPENDENCY simpleschema-mongo *
├─┬ hotMongoCometMessages@0.0.4
│ ├── UNMET DEPENDENCY allhttperrors *
│ └── UNMET DEPENDENCY mongowrapper *
└─┬ hotMongoLogger@0.0.4
├── UNMET DEPENDENCY jsonreststores-mongo *
├── UNMET DEPENDENCY mongowrapper *
└── UNMET DEPENDENCY simpledeclare *
情况不妙!如果你然后跑npm update
......好吧,有点灾难发生了。该模块mongowrapper
依赖于mongodb
,它被下载并编译 N 次。
我真的不想将mongodb
,mongowrapper
等设置simpledeclare
为主hotplate
模块的依赖项,因为......好吧,因为它们不是。Hotplate 只是一个加载器。如果simpledeclare
更高级别的软件包已经需要它,那么 OK 它不需要再次安装。否则,我希望它保留在子模块的node_modules
目录中。
现在,我一定做错了什么。我只是无法弄清楚它是什么......
谢谢!
默克。