我是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');无法正常工作,或者提示我“无法找到模块”类型错误。
  • 我要问的甚至可能吗,如果可以,那怎么办?
  • 将lib放入webroot会对我造成重大风险,还是我错过了Node工作方式的一些基本知识。
  • 你们做什么,生产应用程序的最佳实践是什么?请问您有一些生产实践的例子以及原因。
  • 最佳答案

    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/

    10-10 13:57