NPM如何解决应在哪里安装项目依赖项?

时间:2019-04-08 10:42:37

标签: reactjs npm create-react-app

我们在公司中使用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下。

0 个答案:

没有答案