首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带博览纱线的世博会单体展览馆.工作区:如何自定义metro.config.js文件

带博览纱线的世博会单体展览馆.工作区:如何自定义metro.config.js文件
EN

Stack Overflow用户
提问于 2020-11-12 11:04:18
回答 1查看 1.3K关注 0票数 1

我想建立一个反应-本地博览(空白类型记录模板)项目与monorepo yarn workspaces。我对谷歌的研究表明我使用了这个库expo-yarn-workspaces。在本教程的一个步骤中,您必须“创建”一个metro.config.js并添加以下几行:

代码语言:javascript
复制
const { createMetroConfiguration } = require('expo-yarn-workspaces');
module.exports = createMetroConfiguration(__dirname);

问题是,通常,在我以前的反应性本地博览会项目中,我经常在我的metro.config.js中添加一些自定义配置,以便将我的应用程序导入svg文件作为react components。这是我的自定义配置:

代码语言:javascript
复制
// metro.config.js

const { getDefaultConfig } = require("metro-config");
module.exports = (async () => {
  const {
    resolver: { sourceExts, assetExts }
  } = await getDefaultConfig();
  return {
    transformer: {
      babelTransformerPath: require.resolve("react-native-svg-transformer")
    },
    resolver: {
      assetExts: assetExts.filter(ext => ext !== "svg"),
      sourceExts: [...sourceExts, "svg"]
    }
  };
})();

我的问题是:如何使用自定义配置(如上面所述)进一步自定义metro.config.js文件?

EN

回答 1

Stack Overflow用户

发布于 2021-01-06 09:22:48

您可以将和组合在一起(如果expo版本为v40.0.0或更高版本的话,也可以将组合在一起)来配置react本机包程序。要点是,来自expo纱线工作区及其解析器的配置不会导出sourceExts,您应该使用metro中的另一个配置。

世博SDK v40.0.0或更高版本:

代码语言:javascript
复制
// metro.config.js
const { createMetroConfiguration } = require('expo-yarn-workspaces');
const { getDefaultConfig } = require('@expo/metro-config');

const configuration = createMetroConfiguration(__dirname);

module.exports = (async () => {
  const {
    resolver: { sourceExts }
  } = await getDefaultConfig();

  return {
    transformer: {
      babelTransformerPath: require.resolve("react-native-svg-transformer")
    },
    resolver: {
      ...configuration.resolver,
      assetExts: configuration.resolver.assetExts.filter(ext => ext !== 'svg'),
      sourceExts: [...sourceExts, 'svg'],
      // NOTE: using native entrypoint because bug in metro https://github.com/facebook/metro/issues/485
      resolverMainFields: ['native', 'module', 'browser', 'main'],
    }
  };
})();

使用

代码语言:javascript
复制
// metro.config.js
const { createMetroConfiguration } = require('expo-yarn-workspaces');
const { getDefaultConfig } = require("metro-config");

const configuration = createMetroConfiguration(__dirname);

module.exports = (async () => {
  const {
    resolver: { sourceExts }
  } = await getDefaultConfig();

  return {
    transformer: {
      babelTransformerPath: require.resolve("react-native-svg-transformer")
    },
    resolver: {
      ...configuration.resolver,
      assetExts: configuration.resolver.assetExts.filter(ext => ext !== 'svg'),
      sourceExts: [...sourceExts, 'svg'],
      // NOTE: using native entrypoint because bug in metro https://github.com/facebook/metro/issues/485
      resolverMainFields: ['native', 'module', 'browser', 'main'],
    }
  };
})();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64802707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档