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

我有一个Web应用程序: 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目录中创build我的应用程序目录的副本,并将其安装在另一个 node_modules目录中。

我明白这是安装一个软件包的意义。 但是我require()我的networking应用程序内的其他东西,我直接运行它。 我正在寻找一种简单的方法来将我的依赖关系安装到特定的node_modules目录中。

运行:

 npm install 

从您的app目录(即package.json所在的目录)中,将安装您的应用程序的依赖项,而不是将其安装为模块, 如此处所述 。 这些将被放置在相对于你的package.json文件的./node_modules中(实际上它比这个稍微复杂一点,所以在这里查看npm文档 )。

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

为了防止这种情况,只需从应用程序目录创build一个符号链接到重定位的node_modules:

 ln -s ../node_modules node_modules 

在我的情况下,我需要做的

 sudo npm install 

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