All dependencies start with @umijs/preset-、@umijs/plugin-、umi-preset-、umi-plugin- will be registered as plugin/plugin-preset.
umi 3.x 后会自动探测、装配插件。所以不需要在.umirc.js
中配置plugins和presets。
在 RN 中集成其他umi插件需要开发者自行斟酌。
umi插件包括:
- 内建插件:@umijs/preset-built-in,这一部分是无法拆除的。
- 额外扩展插件:@umijs/plugins
与 DOM 无关的umi插件都是可以使用的,或者说支持服务端渲染的插件基本也是可以在 RN 运行环境中使用的。
目前支持的 umi 配置如下(已满足集成一些常用umi 插件的需要):
- alias
- define
- extraBabelPlugins
- extraBabelPresets
- history:只能使用:
{ type: 'memory' }
- mock:开发中...
- outputPath
- plugins
- presets
- proxy:开发中...
- routes
- singular
- theme:集成 umi-plugin-antd-react-native后,可覆盖 @ant-design/react-native 的主题
上文未列出的umi 配置对 umi-preset-react-native 不生效。
umi-preset-react-native会探测用户工程内的依赖,自动为下列工具生成所需的配置文件和入口文件。
推荐在.gitignore
文件末尾,追加以下内容:
# umi-react-native
tmp
index.js
metro.config.js
babel.config.js
haul.config.js
如果你的 RN 工程只使用一种开发工具则无需任何配置。
如果你的 RN 工程安装了多种开发工具,则必须通过 umi 配置指定当前使用哪一个:
使用expo:
// .umirc.js
export default {
expo: true,
haul: false,
};
使用haul:
// .umirc.js
export default {
expo: false,
haul: true,
};
// .umirc.js
export default {
expo: false,
haul: false,
};
使用extraBabelPlugins和extraBabelPresets添加额外的 Babel 配置。
添加额外的Metro 配置需要使用环境变量:UMI_ENV指定要加载的配置文件:metro.${UMI_ENV}.config.js
。
比如,执行UMI_ENV=dev umi g rn
时,会加载metro.dev.config.js
文件中的配置,使用mergeConfig同metro.config.js
中的配置进行合并。