我们在根据gulp@3.9.1到Node.js 12+。
这些修复使您能够使用Node.js 12+gulp@3.9.1通过将优雅的fs覆盖到版本^4.2.10。
如果您正在使用pnpm
pnpm支持覆盖某些依赖项版本。为此,您应该在package.json文件中添加pnpm部分:
{
"pnpm": {
"overrides": {
"graceful-fs": "^4.2.10"
}
}
}
如果您使用纱线v1
Yarn v1支持将包解析为定义的版本。您需要在package.json中添加一个resolutions部分:
{
"resolutions": {
"graceful-fs": "^4.2.10"
}
}
感谢@jazd以这种方式解决问题。
如果您正在使用npm
运行此命令以了解您正在使用的Node.js版本:
node -v
它将返回一个版本号<major><小调><补丁>如18.11.0。
如果您的版本是v16.14.0或更高版本,则可以通过在package.json文件中添加覆盖部分来覆盖曼妙fs的版本:
{
"overrides": {
"graceful-fs": "^4.2.10"
}
}
否则,您需要使用npm-force分辨率作为预安装脚本,以便能够通过如下方式更改package.json文件来覆盖优雅fs的版本:
{
"scripts": {
"preinstall": "npx npm-force-resolutions"
},
"resolutions": {
"graceful-fs": "^4.2.10"
}
}
npm-force解析将在安装完成之前更改package-lock.json文件,以将优雅的fsto设置为所需版本。
如果您在项目中使用自定义.npmrc文件,并且该文件包含代理或自定义注册表,则可能需要将npx-npm-force分辨率更改为npx-userconfig.npmrc npm-force分辨率,因为某些版本的npx默认情况下不使用当前文件夹.npmrc。
问题的根源
这个问题源于以下事实:gulp@3.9.1取决于monkeypatchesNode.js fs模块的优雅fs@^3.0.0。
在11.15版本之前,这一直适用于Node.js(这是一个开发分支的版本,不应该在生产中使用)。
优雅的fs@^4.0.0不再对Node.js fs模块进行monkeypatch,这使其与Node.js>11.15兼容(已测试并与版本12、14和16一起使用)。
请注意,这不是一个长期的解决方案,但当您没有时间更新到狼吞虎咽@^4.0.0时,它会有所帮助。