2013-03-04 9 views
3

注意:您可以通過運行npm install hotplate來精確複製此內容。 我寫烤盤,這是一個簡單的模塊基於插件的:當您的軟件包具有相關性時,在npm中使用bundleDependencies

https://github.com/mercmobily/hotplate

這基本上是一個小模塊,然後一大堆的「插件」模塊可獲取加載。請注意,由於這個巨大的文件系統重新洗牌爐子目前沒有功能。現在

...基本結構是:

hotplate 
| 
- hotplate.js 
- package.json 
- node_modules 
    | 
    - hotCoreClientFiles 
    - hotCorePage 
    - hotCoreSharedCode 
    - hotDojoAuth 
    ... 

竈具然後加載相關的「插件」(取決於用戶想要做什麼)等,這些插件是與主模塊捆綁。 現在...我有很多的悲傷計算出如何自動加載插件的依賴關係。 這是什麼的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 
└─┬ [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    [...] 
    ├── [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    [...] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ ├── UNMET DEPENDENCY allhttperrors * 
    │ ├── UNMET DEPENDENCY bcrypt * 
    │ ├── UNMET DEPENDENCY hat * 
    │ ├── UNMET DEPENDENCY mongowrapper * 
    │ └── UNMET DEPENDENCY simpleschema-mongo * 
    ├─┬ [email protected] 
    │ ├── UNMET DEPENDENCY allhttperrors * 
    │ └── UNMET DEPENDENCY mongowrapper * 
    └─┬ [email protected] 
    ├── UNMET DEPENDENCY jsonreststores-mongo * 
    ├── UNMET DEPENDENCY mongowrapper * 
    └── UNMET DEPENDENCY simpledeclare * 

這不好!如果您然後運行npm update ......那麼發生一些災難。 模塊mongowrapper取決於mongodb,它被下載並編譯N次。

我真的不希望設置mongodbmongowrappersimpledeclare等爲依賴關係爲主要hotplate模塊,因爲......好吧,因爲它們不是。電爐只是一個裝載機。如果更高級別的軟件包已經需要simpledeclare,那麼OK就不需要再次安裝。否則,我希望它留在子模塊的node_modules目錄中。

現在,我必須做一些非常錯誤的事情。我只是不知道它是什麼...

謝謝!

Merc。

回答

-2

bundleDependencies字段將用於您的插件package.json中。不是你的主要裝載機。

+0

...?呃?你能更清楚地瞭解這一點嗎?如果我將它們從bundledDependencies中取出,事情將不起作用,因爲當我嘗試npm發佈它們時,npm將忽略它們。所以,他們需要在那裏列出。不知道你的意思究竟是什麼...... – Merc 2013-03-04 14:07:36

+0

我的不好,因爲你在基於插件的架構時遇到問題,我以爲你的意思是新的'peerDependencies'。 – Floby 2013-03-04 19:22:06

相關問題