使用npm只安装当前项目需要的包

Using npm to only install the packages needed in current project

我刚开始使用 node/npm,在使用

时遇到了很多麻烦
  1. 安装包的路径
  2. 正在节点中加载包

我想要一个包文件夹(无论其路径如何),其中仅包含我当前项目所需的包(我不使用 package.json,只是使用普通的 npm install...)。因此,我没有将软件包安装在 npm root 给出的文件夹中,而是将所有软件包安装在 npm install --prefix ./node_modules pck_name.

的本地文件夹中

如果我在全局安装包,我可以使用 require('pck-nam') 在 Node 中加载包,但是当我在本地文件夹中安装时,我无法在 Node 中加载包,即使添加node_path 的文件夹路径或 require:

中包的完整路径
const pck =  require('C:/Users/Me/myproject/my_modules/node_modules/pck-name');

错误是Cannot find module 'pck-name'

因为我在这个问题上卡了很长时间没有找到解决方案,所以我想重命名 npm root 给出的文件夹,然后进行全局安装:因为该文件夹将从头开始重新创建,然后我将只拥有我的项目的包。但是在安装之后,我做了 npm list,并且列出了我以前的所有包,包括当前项目的包。

我读了很多 questions/answers 和很多教程,但我仍然无法按照我喜欢的方式使用 npm/node(我习惯了 python 并且我经常使用 import global/local 个模块,所以我可能 python 想得太多了)。

我至少可以部分回答我的问题,因为我知道为什么在我重命名文件夹后之前的包仍然存在。虽然我没有从 package.json 安装,但 npm install 确实创建了 package.json,或者在我的例子中是 package-lock.json。显然,当 运行 a npm install package-name 时,它将检查 package-lock.json 重新安装所有丢失的软件包。

所以重命名npm root所指的文件夹还不够,我还添加重命名package-lock.json。现在我清楚了。我仍然认为我还没有找到最好的方法,但至少我有我需要的。