使用来自同一个库的两个版本的组件(在我的例子中是 npm / Material UI)

IT技术 reactjs version-control npm material-ui
2021-03-29 02:44:15

我在我的生产 React 应用程序中使用了 Material UI 的最新稳定版本。

我需要更新的数据表组件,该组件当前位于 Material UI 的不稳定 alpha 分支中。

npm i material-ui@next由于众多重大更改,我不想升级我的整个应用程序

如何在不升级整个库的情况下访问 alpha 库?我可以安装两个版本的 MUI 吗?我可以在不通过 NPM 安装的情况下调用 alpha API 吗?

提前致谢。

2个回答

经过一番谷歌搜索,找到了这个要使用两个版本:

yarn add material-ui@latest
yarn add material-ui-next@npm:material-ui@next

然后你可以使用

import Divider from 'material-ui-next/Divider'

或者

import Divider from 'material-ui/Divider'
@Jumpa 在这里也一样。我认为这与 MuiThemeProvider 在两个不同版本中的使用方式不同有关。我目前正在尝试解决此问题 - 如果您找到解决方案,请告诉我。
2021-06-04 02:44:15
我用 Yarn 成功添加了两个版本的库,但是在编译后我得到:TypeError:无法读取未定义的属性 'prepareStyles'。
2021-06-05 02:44:15
此解决方案有一个警告:每次我执行 a 时yarn upgrade,yarn 都会将 package.json 中的两个 material-ui 版本转换为next版本。然后我必须手动更正到 0.20.0,删除 node_modules 和 yarn.lock,然后再次运行 yarn
2021-06-10 02:44:15

我在/packages一个名为的文件夹中创建,material-ui-next其中只有一个package.json包含:

{
  "name": "material-ui-next",
  "version": "1.0.0",
  "scripts": {
    "postinstall": "mv node_modules/material-ui/* ."
  },
  "dependencies": {
    "material-ui": "next"
  }
}

因此,现在从项目的根目录开始,人们可以做npm install packages/material-ui-next --save然后可以createPalette = require('material-ui-next/styles/palette')或从material-ui现在起任何想要要求的别名为material-ui-next.

说明:作为"material-ui": "next"一个依赖项,它将被安装,node_modules/material-ui所以通过在material-ui-next安装包后添加一个脚本移动node_modules/material-ui到包的根目录,我们可以require('material-ui-next/WHATEVER')

我不确定是否理解您的问题,但如果您想知道安装后脚本是否会移动您实际项目的module,则情况并非如此,因为脚本的根文件夹实际上将 %YOURPROJECTROOT%/node_modules/material- ui-next 并且此文件夹包含另一个带有 material-ui 的 node_modules,其内容由脚本移动到文件夹 material-ui-next 的顶部。这是否回答你的问题 ?
2021-05-24 02:44:15
它不会也移动原始node_modules/material-ui/文件夹吗?
2021-06-04 02:44:15