我的'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'); 这不起作用,要么给我'无法找到模块'类型的错误。

  • 我甚至在问什么,如果是的话,那又怎么样?
  • 是否有任何主要的风险,我有我的libs在一个webroot或者我错过了一些基本的方式与节点的工作方式。
  • 你们做什么,生产应用程序的最佳做法是什么? 我可以举一些你的生产实践和原因。

  • 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

    上一篇: modules directory outside of my 'webroot'

    下一篇: Can't git clone by adding ssh