# ์ค์น
npm install react-native-svg
# Expo์ผ ๊ฒฝ์ฐ โ
# expo install react-native-svg
npm install -D react-native-svg-transformer
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';