我是Node的新手,但到目前为止很开心。我试图将node_modules
(库)目录移到公共(public)“webroot”之外,并且需要建议和指导。
我已经建立了一个简单的基于expressJS的Node项目,如下所示:
/my_project
/config
/public
/node_modules
server.js
我想知道是否有什么办法可以将
/node_modules
dir放在我的Webroot之外,而不会破坏我的应用程序。我只是习惯于在公开的网络根目录中保留最低限度的内容,而且在那里的libs感觉不对。称我为老式,但这就是我习惯于在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.“什么是生产应用程序的最佳实践?”
不太适合SO,但是既然我愿意,我还是会给它一个机会。如果使用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
这种结构的优点是可以清楚地将核心文件,依赖项和所有测试分开,同时将它们都保存在同一文件夹中。
关于node.js - 我可以将npm node_modules目录放在 'webroot'之外吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15521655/