我在讨论如何设置某些节点模块。
假设我有一个名为" 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\cucumber
,Projects\MyProject2\node_modules\cucumber
等等。看起来愚蠢和重复这样做......?
根据您在节点中管理项目的经验,建议哪个选项最好?为什么您认为这个?
答案 0 :(得分:2)
npm install -g - 在这里,任何package.json都可以在我的电脑上找到它我认为
这不会起作用,因为节点脚本中的require
无法获取全局模块。
npm install [whatver]在我" Projects"的根目录中文件夹,所以现在我有一个npm_modules文件夹位于根目录,因此任何创建的项目&packages.json都能够在我的Projects文件夹的根目录中找到那些类型的模块
只要你的"项目"中的项目,这肯定会起作用。文件夹将永远在那里。如果您发布项目,那么该项目的依赖项必须与它一起使用。
npm安装到项目下的每个项目中。但这似乎并不高效。如果我每次克隆一个项目时都要让人们安装像黄瓜这样的东西,这意味着当他们运行npm install时,它必须一次又一次地安装黄瓜,对于每个项目来说,这对我来说似乎很蠢就像那样,如果它真的是一个全球性的包我打算在很多项目中使用
为什么这是愚蠢的?只要您执行npm install cucumber --save
,您对cucumber
的依赖就会保存到项目的package.json
文件中。所有克隆你的项目的人都应该这样做:
$ git clone project.git
$ cd project && npm install
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