我有一个网络应用: 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目录中。
答案 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
仅此而已