2016-05-25 17 views
5

いくつかの内部モジュールへのアクセスを提供する必要のあるノードアプリケーション(npmモジュールとして使用され、他のノードアプリケーションによってpackage.jsonへの依存として使用されています)ノードNPMアプリケーションからモジュールを公開する

var appState = require("./utils/appState"); 
var appLclStorage = require("./utils/AppLocalStorage"); 
var processHandler = require("./controller/processHandler"); 
.... 

var appApi = module.exports = {}; 

appApi.appState = appState; 
appApi.appLclStorage = appLclStorage; 
appApi.processHandler = processHandler; 
.... 
:)依存関係として私のパッケージを使用して すべてのそれらのモジュールは

モジュールは内部index.js

である私は、以下のか私の「メイン」を消費するために必要な機能のために輸出を使います

私は追加のmoduを持っています私の質問はノードでそれを行うより良い/クリーンな方法があるかどうかです。

+3

。 –

+1

'aws-sdk '(https://github.com/aws/aws)のような大きなパッケージであっても、あなたの' package.json'に 'main'ファイルが必要なので、 -sdk-js/blob/master/lib/aws.js)は、このパターンを使用して書き込まれます。しかし、大きな質問。 – peteb

+0

@peteb - ありがとう:) –

答えて

0

私はそれがあなたが記述する方法でそれを行うことがうまく動作することがわかります。

index.jsファイルをディレクトリに追加し、同じディレクトリから他のファイルをエクスポートすることで、少しでも構築できます。その後、requireディレクトリを取得します。

次のファイル構造で
// add.js 
module.exports = function (num1, num2) { 
    return num1 + num2; 
}; 

// subtract.js 
module.exports = function (num1, num2) { 
    return num1 - num2; 
}; 

// multiply.js 
module.exports = function (num1, num2) { 
    return num1 * num2; 
}; 

// index.js 
var Calc = {}; 
require('fs').readdirSync(__dirname).forEach(function (file) { 
    if (file !== 'index.js') { 
    var fileName = file.replace('.js', ''); 
    Calc[fileName] = require('./' + fileName); 
    } 
}); 
module.exports = Calc; 

// main.js 
var Calc = require('./calc'); 

var zero = Calc.subtract(1, 1); 
var one = Calc.multiply(1, 1); 
var two = Calc.add(1, 1); 

:私は多くのことを見アプローチだ

├── calc 
│   ├── add.js 
│   ├── index.js 
│   ├── multiply.js 
│   └── subtract.js 
└── main.js 
関連する問題