扩展ReactNative的平台特定扩展?

时间:2017-06-09 11:36:00

标签: javascript react-native webpack

是否可以挂钩React-Native的特定平台扩展以使用自定义扩展?

以同样的方式,您可以分散.ios.js.android.js,是否有办法定义自定义扩展.xyz.js。 (相当于webpack的resolve.extensions

1 个答案:

答案 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(如果存在)。