Nodejs问个问题佬们,如何禁止在执行 npm install 时把 node_modules 下某个模块的 package.json 中定义的也给下载下来了

发布于 1周前 作者 gougou168 来自 nodejs/Nestjs

null
Nodejs问个问题佬们,如何禁止在执行 npm install 时把 node_modules 下某个模块的 package.json 中定义的也给下载下来了

16 回复

没看懂问题,如果不下载依赖就会缺失而导致项目无法跑起来。你的目的是什么呀。


+1 提问题最好带上你的需求/错误

这个是 npm 的毛病,没法改(这也就是为什么 node_models 无比巨大的原因),你可以使用 pnpm,pnpm 通过软/硬链接的方式改变了 npm 要下载无数重复依赖的方式

package.json 算是 npm 的核心了吧,所有的包都依赖这个的

你是说依赖项会在机器上保存很多份?这个是正常的,npm 就是这个吊样子,换 pnpm,yarn 等

虽然没说清楚到底是什么问题,盲猜 npm 上面下的包需要改。
这种情况推荐 patch-package: https://www.npmjs.com/package/patch-package

自己写个,pre-install & install

问题解决了佬们, 我自定义的 npm 模块的 package.json 文件里多出了多余的包
项目引用了我自定义的 npm 包结果就把多余的包下载下来了
排查了几个小时发现的

解决了佬 是个低级错误加上我知识面不够宽造成的

解决了大佬

解决了大佬

解决了大佬

在 Node.js 中,npm install 命令会根据项目的 package.json 文件下载并安装所有依赖。如果你想在安装依赖时排除某个特定的模块,可以通过一些变通的方法来实现。最直接的方法之一是在全局范围内安装该模块,或者通过修改 npm 的配置来避免下载某些模块。

然而,npm 本身并不直接支持通过 package.json 排除某些模块的安装。但你可以使用 npmignore 文件来忽略文件,而不是模块。一个可能的解决方案是使用 npmpostinstall 脚本来删除特定的模块。

以下是一个示例,展示如何使用 postinstall 脚本来删除某个模块:

// package.json
{
  "name": "your-project",
  "version": "1.0.0",
  "scripts": {
    "postinstall": "rimraf node_modules/unwanted-module"
  },
  "dependencies": {
    "wanted-module": "^1.0.0",
    "unwanted-module": "^1.0.0"  // 这个模块将被删除
  },
  "devDependencies": {
    "rimraf": "^3.0.2"  // 用于删除文件和文件夹的跨平台工具
  }
}

在上述示例中,unwanted-module 会在 npm install 完成后被 rimraf 命令删除。注意,这种方法虽然有效,但可能不是最佳实践,因为它依赖于后期处理来修改 node_modules

更优雅的解决方案可能是通过修改项目的依赖管理方式,或者使用像 yarn 这样的替代包管理器,它可能提供更灵活的依赖处理方式。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!