我有一个使用styleguidist和其他自定义功能的组件库包*,它使我可以在不同的应用程序中重复使用某些表示/哑组件。
这些是经过构建,测试和导入的,并在成功使用React v16的不同项目中使用。
最近试图将该包包含在React v15项目中,但失败了;没有错误,但是DOM出现了“ <undefined></undefined>
”:
import { Foobar } from '@privatePackage/packageFoobar'
<Foobar />
渲染:
<undefined></undefined>
理想情况下,我会将旧项目更新为React的最新版本,并在原始源中设置peerDependencies,以防止将React *捆绑在软件包中*进行分发。另外,在devDependencies中进行“反应”以开发。
"peerDependencies": {
"react": ">=16.x",
...
},
"devDependencies": {
"react": ">=16.x",
...
}
那么,认为与旧版React捆绑在一起的组件与以后的版本不兼容是正确的吗?还是将React捆绑在发行文件中是为什么它不起作用的原因?我知道捆绑“ React”不是一个好习惯,而应该作为peerDependency,但是对于遗留项目而言,由于与项目中大多数程序包相关的API更改等原因,现在不更新React是理想的选择。
如上所述,即使彼此捆绑在一起,尝试使用彼此不同的React版本也不是一个好习惯,在上述情况下,组件是从使用最新React版本的项目中导入的,然后导入到旧版本。它失败了,应该失败了。
要解决此问题,需要对旧项目包进行单独更新并解决任何API更改等问题。随后,较低级的包(组件库*)应该在peerDependencies和开发中都具有react依赖。