如何使用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目录中复制我的应用程序目录,并将包安装在另一个node_module目录中。

我知道这对于安装软件包是有意义的。但我不会把我的网络应用程序require()放在其他东西里,而是直接运行它。我正在寻找一种简单的方法,将依赖项安装到特定的node_modules目录中。

运行:

npm install

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

如果需要,您可以将node_modules目录移动到应用程序的父目录,因为节点的"require"机制可以理解这一点。然而,如果你想用install/update更新你的应用程序的依赖关系,npm将不会看到重新定位的"node_modules",而是会创建一个新的目录,同样是相对于package.json。

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

ln -s ../node_modules node_modules

在我的情况下,我需要进行

sudo npm install  

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

只执行

sudo npm i --save

这就是

npm i --force

来自文档:

-f--force自变量将强制npm获取远程资源,即使磁盘上存在本地副本也是如此

最新更新