npm 工作区中不同版本的 React

jor*_*gen 5 javascript version npm reactjs npm-workspaces

我们希望在同一工作区的两个 npm 包中拥有一个具有不同版本的 React 的工作区,因为其中一个包的依赖项尚未与 v18 兼容。但是,如果不将其中一个版本提升到根级别,我们就无法执行此操作,从而导致另一个包中的应用程序出现问题。

\n

至少我认为这就是正在发生的事情。简单的再现如下:

\n
    \n
  • 创建一个包含两个包的新 npm 工作区,packages/a并且packages/b;根package.json包括workspaces: ["packages/*"]
  • \n
  • 使用以下命令在每个工作区包中创建一个新应用程序create-react-app
  • \n
  • a通过编辑其工作区 \xc2\xa0down 中的版本将其降级为 17package.json
  • \n
  • 在每个app中添加一个hook,如果同时运行两个版本就会报错
  • \n
  • 删除所有node_modules文件夹,删除所有package-lock.json文件,npm i在根文件夹下运行
  • \n
  • 启动这两个应用程序。这会导致钩子出现“react 的多个版本”错误。检查node_modules根级别的文件夹,我们发现它包含 React 版本之一
  • \n
  • 我们还尝试npm i分别在每个包中运行,得到相同的结果
  • \n
\n

此外,我们尝试创建类似的设置,但没有完整的应用程序,仅在两者中安装(不同版本的) react\xc2\xa0 ;react-dom根级别node_modules\xc2\xa0 仍然包含其中之一。

\n

最后我们尝试使用--legacy-bundling,但没能成功;我们也不确定这是否值得。

\n

有没有办法让工作区包含两个不同版本的 React?

\n