是否可以挂钩React-Native的特定平台扩展以使用自定义扩展?
以同样的方式,您可以分散.ios.js
和.android.js
,是否有办法定义自定义扩展.xyz.js
。 (相当于webpack的resolve.extensions)
答案 0 :(得分:2)
您可以像这样在项目根目录的rn-cli.config.js
中覆盖原始捆绑程序配置:
const { getDefaultConfig } = require('metro-config')
module.exports = (async () => {
const {
resolver: {
sourceExt
}
} = await getDefaultConfig()
return {
resolver: {
sourceExts: ['xyz.js', ...sourceExts]
}
}
})()
bundler documentation建议使用platforms
属性而不是sourceExt
,但不幸的是,我对此还算不上运气(很可能是因为实际的目标平台仍会是ios
或`android,因此RN将使用该版本而不是我们的版本)。
sourceExts
不是扩展平台列表本身,而是扩展列表,默认情况下类似于['js', 'json', 'ts', 'tsx']
。如果我们像['xyz.js', 'js', 'json', 'ts', 'tsx']
那样展开它,RN将首先选择*.xyz.js
(如果存在)。