https://github.com/kristerkari/react-native-svg-transformerを使用します
このパッケージでは、.svg
ファイルはReact Native v0.57以下ではサポートされていないことが記載されている.svgx
ため、svgファイルには拡張子を使用してください。
Webまたはreact-native-webの場合は、https://www.npmjs.com/package/@svgr/webpackを使用してください
react-native-svg-uri
react-nativeバージョン0.57以前で使用してsvgファイルをレンダリングするには、ルートプロジェクトに次のファイルを追加する必要があります
注:拡張子svg
をに変更しますsvgx
ステップ1:transformer.js
プロジェクトのルートにファイルを追加する
const cleanupSvg = require('./cleanup-svg');
const upstreamTransformer = require("metro/src/transformer");
const svgExtensions = ["svgx"]
function fixRenderingBugs(content) {
return "module.exports = `" + content + "`";
}
module.exports.transform = function ({ src, filename, options }) {
if (svgExtensions.some(ext => filename.endsWith("." + ext))) {
return upstreamTransformer.transform({
src: fixRenderingBugs(src),
filename,
options
})
}
return upstreamTransformer.transform({ src, filename, options });
}
ステップ2:rn-cli.config.js
プロジェクトのルートに追加する
module.exports = {
getTransformModulePath() {
return require.resolve("./transformer");
},
getSourceExts() {
return [ "svgx"];
}
};
上記のソリューションは、本番アプリでも機能します✅