从节点NPM应用程序公开模块
我有节点应用程序(用作npm moudule,用作其他节点应用程序对package.json的依赖),这些应用程序需要提供对某些内部模块(对使用我的包作为依赖项的应用程序)的访问权限,所有这些模块将导出用于需要消耗的function
我的“主”模块是index.js
在里面我做以下几点:
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文件并使其从同一目录中导出其他文件来构build它。 然后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