[RN] ๐ŸŒปsvg๋ฅผ ์ปดํฌ๋„ŒํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

TATAยท2023๋…„ 9์›” 5์ผ
0

React-Native

๋ชฉ๋ก ๋ณด๊ธฐ
5/10

โ’ˆ react-native-svg ์„ค์น˜

# ์„ค์น˜
npm install react-native-svg
# Expo์ผ ๊ฒฝ์šฐ โ†“
# expo install react-native-svg

npm install -D react-native-svg-transformer

โ’‰ metro.config.ts

metro.config.ts ํŒŒ์ผ ์ƒ์„ฑ

cli

const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config");

const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = defaultConfig.resolver;

/**
 * Metro configuration
 * https://reactnative.dev/docs/metro
 *
 * @type {import('metro-config').MetroConfig}
 */
const config = {
  transformer: {
    babelTransformerPath: require.resolve("react-native-svg-transformer")
  },
  resolver: {
    assetExts: assetExts.filter((ext) => ext !== "svg"),
    sourceExts: [...sourceExts, "svg"]
  }
};

module.exports = mergeConfig(defaultConfig, config);

expo

/* metro.config.ts */
const { getDefaultConfig } = require("expo/metro-config");

module.exports = (() => {
  const config = getDefaultConfig(__dirname);

  const { transformer, resolver } = config;

  config.transformer = {
    ...transformer,
    babelTransformerPath: require.resolve("react-native-svg-transformer"),
  };
  config.resolver = {
    ...resolver,
    assetExts: resolver.assetExts.filter((ext: string) => ext !== "svg"),
    sourceExts: [...resolver.sourceExts, "svg"],
  };

  return config;
})();

global.d.ts

declare module '*.svg' {
  import React from 'react';
  import {SvgProps} from 'react-native-svg';
  const content: React.FC<SvgProps>;
  export default content;
}

src/assets/~~~.svg

svgํŒŒ์ผ ๋„ฃ์–ด๋‘๊ณ  importํ•ด์„œ ์ปดํฌ๋„ŒํŠธ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด ๋จ


โž• ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ

require('๊ฒฝ๋กœ')๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์ง€๋งŒ

<Image source={require('./src/assets/png-file/crayon-line.png')} />

์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

import crayonPng from './src/assets/png-file/crayon-line.png';

<Image source={crayonPng} />

import-image.d.ts ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ ,
์ด๋ฏธ์ง€ ํŒŒ์ผ ํ™•์žฅ์ž์ธ .png ๋ฐ .jpg์— ๋Œ€ํ•œ ๋ชจ๋“ˆ ํƒ€์ž…์„ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

/* import-image.d.ts */
declare module '*.png';
declare module '*.jpg';
profile
๐ŸŒฟ https://www.tatahyeonv.com

0๊ฐœ์˜ ๋Œ“๊ธ€