我可以把npm node_modules目录放在我的'webroot'
我对Node很陌生,但是到目前为止我都很享受。 我试图将我的node_modules
(库)目录移到公共“webroot”之外,需要build议和指导。
我已经安装了我的简单的基于expressJS的Node项目,如下所示:
/my_project /config /public /node_modules server.js
我想知道是否有任何方法我可以有/node_modules
目录我的webroot之外,而不是打破我的应用程序。 我只是习惯于保持公开暴露的webroot中的最小值,并且对那些库中的libs不感到满意。 打电话给我老式的,但这就是我习惯于在PHP和C#世界做的东西。
如果我按照以下步骤设置项目:
/my_project /config /node_modules /public server.js
那么这一切都会摇摆不定,而Node的require()
魔法则会破灭。
我已经尝试了以下内容:
var express=require('../express');
这不起作用或者给我'找不到模块'types的错误。
- 我甚至在问什么,如果是的话,怎么样?
- 是否有任何主要的风险,我有我的libs在一个webroot或者我错过了一些基本的方式与节点的工作方式。
-
你们做什么,生产应用程序的最佳做法是什么?我可以举一些你的生产实践,为什么。
1.是否有可能在项目之外的文件夹中有模块
是。
2.在webroot中有模块有什么主要的风险吗?
假设你的“webroot”是指在服务器的根目录或你的项目之外的任何文件夹:是的。 可以使用g-flag: npm install -g express
在全局安装模块。 这通常被认为是不好的做法,因为不同的项目可能取决于同一模块的不同版本。 本地安装允许不同的项目有不同的版本。
如果您使用的是版本控制,并且不想检入外部模块,那么常见的(和标准的npm)模式就是忽略./node_modules
并指定package.json文件中的依赖关系。
3.“生产应用程序的最佳做法是什么?”
不适合所以,但是因为我在这,所以无论如何我会给它一个镜头。 如果你使用grunt (一个非常stream行的任务自动化工具),你通常会得到这样的结构:
/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
这个结构具有将核心文件,相关性和任何testing清楚地分开的优点,同时将它们保持在同一个文件夹中。