全局安装某些NPM模块?

时间:2015-06-11 20:52:01

标签: node.js

我在讨论如何设置某些节点模块。

假设我有一个名为" Projects"的文件夹。这将包含我将在此过程中创建的节点的各种代码项目。

现在我可以安装像黄瓜,lodash,摩卡等东西... 我知道我可能会在大多数项目中使用

的东西。

1) npm install -g - 在这里,任何package.json都可以在我的电脑上找到它我认为

2) npm install [whatver]在我" Projects"的根目录中文件夹,所以现在我有一个npm_modules文件夹位于根目录,所以创建的任何项目的package.json将能够在我的Projects文件夹的根目录找到这些类型的模块 - 在这里,我必须在我的Projects文件夹的根目录下安装一次npm如果还没有全局安装,我没有选择#1

3) npm安装到项目下的每个项目中。但这似乎并不高效。如果我每次克隆一个项目时都要让人们安装像黄瓜这样的东西,这意味着当他们运行npm install时,它必须一次又一次地安装黄瓜,对于每个项目来说,这对我来说似乎很蠢就像那样,如果它真的是一个全球性的包我打算在很多项目中使用

- 所以这里例如我可能有几个我创建或克隆的项目:Projects ** MyProject1 **,Projects ** MyProject2 **,依此类推。每个项目都有自己的package.json,当然要寻找像黄瓜,摩卡等依赖项。如果我这样做,我将不得不等待npm将它们安装到每个自己的node_module文件夹中例如Projects\MyProject1\node_modules\cucumberProjects\MyProject2\node_modules\cucumber等等。看起来愚蠢和重复这样做......?

根据您在节点中管理项目的经验,建议哪个选项最好?为什么您认为这个?

1 个答案:

答案 0 :(得分:2)

  1.   

    npm install -g - 在这里,任何package.json都可以在我的电脑上找到它我认为

    这不会起作用,因为节点脚本中的require无法获取全局模块。

  2.   

    npm install [whatver]在我" Projects"的根目录中文件夹,所以现在我有一个npm_modules文件夹位于根目录,因此任何创建的项目&packages.json都能够在我的Projects文件夹的根目录中找到那些类型的模块

    只要你的"项目"中的项目,这肯定会起作用。文件夹将永远在那里。如果您发布项目,那么该项目的依赖项必须与它一起使用。

  3.   

    npm安装到项目下的每个项目中。但这似乎并不高效。如果我每次克隆一个项目时都要让人们安装像黄瓜这样的东西,这意味着当他们运行npm install时,它必须一次又一次地安装黄瓜,对于每个项目来说,这对我来说似乎很蠢就像那样,如果它真的是一个全球性的包我打算在很多项目中使用

    为什么这是愚蠢的?只要您执行npm install cucumber --save,您对cucumber的依赖就会保存到项目的package.json文件中。所有克隆你的项目的人都应该这样做:

    1. $ git clone project.git

    2. $ cd project && npm install

    3. 没有任何其他参数的

      npm install将安装项目的package.json文件中列出的所有依赖项。它只需要做一次。之后,下载所有依赖项并将其安装在项目的node_modules目录中。他们需要再次从项目目录的根目录运行npm install的唯一一次是,如果他们删除了node_modules文件夹,或者您进行了更改并向{{1添加了新的依赖项}}

      在" Projects"中安装模块目录将使它们可用于任何子目录中package.json模块的任何脚本。请记住,如果我要克隆您的存储库,我就不会拥有您的" Projects"目录。我只是拥有你项目的目录,无论我把它克隆到哪里。我需要以某种方式获取这些依赖项,最简单的方法是让require进入项目并运行cd,其中应该有一个npm install文件,列出所有必需的依赖项。

      PS - 如果您的项目根目录中已有package.json文件,则npm install [module-name] --save仅保存依赖项版本。如果你还没有,那么首先初始化一个。

      package.json