仅安装devDependencies-`swagger-express-middleware`会阻止`glob`的安装

问题描述

我正在尝试安装glob模块,并且遇到了一个似乎无法理解的怪异错误

Package.json(这不是代码段,这是用于复制问题的整个文件):

{
  "devDependencies": {
    "glob": "^7.1.6"
  }
}

Bash脚本:

#!/bin/bash -euxo pipefail

rm -rf node_modules || true    # remove folder if present
rm package-lock.json || true   # remove lockfile if present
npm install --only=development # install devDependencies only
ls node_modules/glob           # check whether glob was installed

这可以按预期方式工作-已安装globglob文件夹的内容已打印到屏幕上,大家都很高兴。

但是当我将swagger-express-middleware放在主要的dependencies部分中时:

Package.json:

{
  "dependencies": {
    "swagger-express-middleware": "^4.0.0"
  },"devDependencies": {
    "glob": "^7.1.6"
  }
}

并运行与上述相同的bash脚本,然后出现以下错误

ls: node_modules/glob: No such file or directory

换句话说,glob模块从未安装过,即使唯一的区别是存在一个甚至都没有安装过的依赖项,因为我们专门通过{{1} }。

为什么会这样呢?我一生无法弄清楚为什么npm install --only=development的存在(请注意,没有其他模块可以这样做)会阻止swagger-express-middleware的安装。

还有其他类似冲突的例子吗?

设备详细信息(以防万一):macOS Catalina 10.15.7,NPM 6.14.8,节点12.18.2

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)