我们在公司中使用Create-React-App的分支,并且使用类似于“ react-scripts”(并以此为基础)的项目。
在等效的react-scripts中,我们具有带有很多依赖项的package.json。对于此示例,这两个就足够了:
"A": "2.0.0-rc.5",
"B": "^0.5.0",
在我的项目中,此“反应脚本”作为依赖项,我运行“ npm install”。但是,结果是:
A安装在node_modules下
B安装在node_modules / our-react-scripts / node_modules下
这打破了我们的反应脚本的破坏。我可以在webpack.config.js中添加几个别名,以“帮助” Webpack知道在哪里可以找到这些软件包,但这引发了一个新错误:B的依赖项安装在根/ node_modules中,尽管软件包本身不是
例如,这意味着当B要使用其“自动调整大小”依赖项时,它将尝试从其./node_modules解析它,但是失败了,因为此软件包已安装在项目的根node_modules下。 / p>
我可以想到一个后安装脚本,该脚本会将我们的软件包移动到根node_modules文件夹中,但这似乎是将污垢隐藏在地毯下,并且将来也有可能打破破坏。
在webpack.config.js中添加别名无济于事,因为这些依赖项的依赖项安装在项目根节点node_modules中,而依赖项本身则没有,因此相对依赖项解析将不起作用。
我想避免在webpack.config.js中以及在package.json中进行后期安装。
alias: {
'@ether/uiverse-widgets': path.resolve(
'./node_modules/@ether/ether-scripts/node_modules/@ether/uiverse-widgets'
),
'@ether/uiverse-core': path.resolve(
'./node_modules/@ether/ether-scripts/node_modules/@ether/uiverse-core'
),
},
tl; dr:我的依赖项A依赖于B和C。它将B安装在./node_modules下,但是将C安装在./node_modules/A/node_modules下。