如何pipe理Node.js应用程序的基于requireJS的包

既然碰到了RequireJS,我已经开始全心全意地采用它,因为它似乎是一个很好的组织依赖等的方式。

对于我当前的项目,我创build了一个requireJS组织模块的“包”,它将提供所需的数据库API给许多node.js应用程序。

但是,我遇到了一个绊脚石……我怎么能让第三方应用程序使用我的包,而不需要与requireJS faff?

我的应用程序和API的目录结构目前如下所示:

api_package/node_modules api_package/controllers/* api_package/views/* api_package/helpers/* api_package/models/* api_package/main.js application_1/node_modules application_1/app.js application_2/node_modules application_2/app.js 

我需要我的应用程序是独立的 – 所以他们可以很容易地部署 – 所以我目前的工作是将api_package / *复制到application_1&2的“node_modules”目录,并将它们的requirejsconfiguration设置为以下内容:

 (function() { var requirejs; requirejs = require('requirejs').config({ baseUrl: __dirname, nodeRequire: require, packages: [ { name: 'api_package', location: './node_modules/api_package' } ] }); 

这感觉有点肮脏和错误!

有没有更好的办法? 我是否缺lessrequireJS的一些包装function?

甚至有可能隐藏我的api_package(我正在使用requireJS的细节)的实现细节,并允许应用程序像使用其他模块一样使用它:

 require('api_package') 

您可以使用amdefine包,它允许您编码到AMD API,并使模块在节点程序中工作,而不需要其他程序使用AMD。

除了amdefine github页面上的文档之外,这也logging在RequireJS网站上 。