我跟随 github meteorirc 项目的领导并将它们放在 /public/
我通过 npm 从 /public/ 内部安装了我的节点模块,因此我有一个 /public/node_modules/ 目录。
我不认为这对他们来说是“适当”或“标准”的地方,因为根据 Meteor 文档...
Meteor 收集所有 JavaScript 文件,不包括客户端和公共子目录下的任何内容,并将它们加载到 Fiber 内的 Node.js 服务器实例中
要加载的代码位于服务器目录和服务器 js 文件中,如下所示。
var require = __meteor_bootstrap__.require;
var path = require("path");
var fs = require('fs');
var base = path.resolve('.');
if (base == '/'){
base = path.dirname(global.require.main.filename);
}
var Twit;
var twitPath = 'node_modules/twit';
var publicTwitPath = path.resolve(base+'/public/'+twitPath);
var staticTwitPath = path.resolve(base+'/static/'+twitPath);
if (path.existsSync(publicTwitPath)){
Twit = require(publicTwitPath);
}
else if (path.existsSync(staticTwitPath)){
Twit = require(staticTwitPath);
}
else{
console.log('WARNING Twit not loaded. Node_modules not found');
}
根据文档,这不是标准的,我不相信我应该这样做。然而,它既适用于我的开发平台,也适用于 deploymeteor.com 的生产环境。
节点模块应该安装在项目目录结构的哪个位置,以便它们在本地工作以及在meteor.com 或其他地方部署时工作?