如何使用npm在当前目录中安装package.json依赖项

时间:2011-12-03 10:26:09

标签: deployment node.js dependencies npm

我有一个网络应用: fooapp 。我在根目录中有一个package.json。我想在特定的node_modules directory中安装所有依赖项。我该怎么做?

我想要什么

假设我有两个widget依赖项。我想最终得到这样的目录结构:

node_modules/
  widgetA
  widgetB
fooapp/
  package.js
  lib
  ..

我得到了什么

当我运行npm install fooapp/时,我得到了这个:

node_modules/
  fooapp/
    node_modules/
      widgetA
      widgetB
    package.js
    lib/
    ..
fooapp/
  package.js
  lib/
  ..

npm在node_modules目录中制作我的app目录的副本,并在另一个 node_modules目录中安装这些包。

我理解安装包有意义。但我没有require()我的网络应用程序内部的东西,我直接运行它。我正在寻找一种简单的方法来将我的依赖项安装到特定的node_modules目录中。

3 个答案:

答案 0 :(得分:337)

运行:

npm install
来自app目录内的

(即package.json所在的位置)将安装用于您的应用的依赖项,而不是将其安装为模块as described here。这些文件将放在相对于你的package.json文件的./node_modules中(它实际上比这稍微复杂一些,所以请检查the npm docs here)。

如果需要,您可以自由地将node_modules目录移动到应用程序的父目录,因为节点的'require'机制可以理解这一点。但是,如果您想使用install / update更新应用程序的依赖项,则npm将不会再看到重定位的“node_modules”,而是相对于package.json创建一个新的目录。

要防止这种情况,只需从app dir创建一个符合重定位的node_modules的符号链接:

ln -s ../node_modules node_modules

答案 1 :(得分:13)

就我而言,我需要做

sudo npm install  

我的项目在/ var / www里面,所以我还需要设置适当的权限。

答案 2 :(得分:1)

只需执行

sudo npm i --save

仅此而已