我的'webroot'之外的模块目录
我对Node很陌生,但到目前为止我都很享受。 我试图将我的node_modules
(库)目录移到公共“webroot”之外,需要建议和指导。
我已经安装了我的基于简单expressJS的Node项目,如下所示:
/my_project
/config
/public
/node_modules
server.js
我想知道是否有任何方法可以让/node_modules
目录位于我的webroot之外,而不会中断我的应用程序。 我只是习惯于将公开暴露的webroot保留在最低限度,并且对那些库中的内容感到不适应。 打电话给我老式的,但这就是我习惯于在PHP和C#世界做东西。
如果我按照以下步骤设置项目:
/my_project
/config
/node_modules
/public
server.js
那么它一切都会摇摆不定,而Node的require()
魔术破坏。
我试过以下内容:
var express=require('../express');
这不起作用,要么给我'无法找到模块'类型的错误。
1.是否可以在项目之外的文件夹中包含模块
是。
2.在webroot中使用模块会有什么主要风险吗?
假设你的“webroot”是指服务器的根目录或你的项目之外的任何文件夹:是的。 可以使用g-flag: npm install -g express
在npm中全局安装模块。 这通常被认为是不好的做法,因为不同的项目可能取决于同一模块的不同版本。 本地安装允许不同的项目具有不同的版本。
如果您使用的是版本控制并且不想检入外部模块,那么常见的(和标准的npm)模式就是忽略./node_modules
并指定package.json文件中的依赖关系。
3.“生产应用程序的最佳做法是什么?”
不适合所以,但是因为我在这,所以无论如何我会给它一个镜头。 如果你使用grunt(一个非常流行的任务自动化工具),你通常会得到如下结构:
/my_project
/node_modules
/lib
# actual project files
/public
# files that are meant to be sent to clients
/test
package.json # specifies dependencies, main script, version etc
README.md # optional
这种结构具有将核心文件,相关性和任何测试清楚分开的优点,同时将它们全部保存在同一个文件夹中。
链接地址: http://www.djcxy.com/p/70193.html