3

注: を実行すると、これを正確に再現できます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と...まあ、ちょっとした災害が発生します。モジュールは、N 回ダウンロードおよびコンパイルされる にmongowrapper依存します。mongodb

mongodb、などを依存関係としてメインmongowrapperモジュールとして設定したくありません...まあ、そうではないからです。ホットプレートはローダーのみです。より高いレベルのパッケージで既に必要な場合は、再度インストールする必要はありません。それ以外の場合は、サブモジュールのディレクトリに置いておきたいと思います。simpledeclarehotplatesimpledeclarenode_modules

今、私は何か非常に悪いことをしているに違いありません。私はそれが何であるかを理解することはできません...

ありがとうございました!

メルク。

4

1 に答える 1

-3

bundleDependencies フィールドは、プラグイン package.json で使用されます。メインローダーではありません。

于 2013-03-04T10:08:53.880 に答える