SVGR jest ํ ์คํ ์๋ฌ
์ปดํฌ๋ํธ๋ฅผ Test ํ๋ฉด์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. (Jest๋ฅผ ์ฌ์ฉ ์ค์ด๋ค.)
์์ธ์ Next.js์์ svgํ์ผ์ SVGR๋ก ๋ณํํ์ฌ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด์๋ค. (์์ธ์ ์์๋ด๋ ๊ฒ๋ ํ ์๊ฐ ๊ฑธ๋ฆฐ ๋ฏํ๋ค๐)
SVGR ๊ณต์ ๋ฌธ์์ ์น์ ํ๊ฒ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋์์๋ค.
SVGR - Transforms SVG into React Components. - SVGR
Transforms SVG into React Components.
react-svgr.com
1. __mock__
ํด๋์ svg.js
ํ์ผ์ ์์ฑํ๋ค.
export default 'SvgrURL'
export const ReactComponent = 'div'
ํ์ฌ ํ๋ก์ ํธ์์๋ ์ด๋ฏธ mocks
ํด๋๊ฐ ์์ด svg.js
ํ์ผ๋ง ์์ฑํ๋ค.
2.jest.config.ts
ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
module.exports = {
moduleNameMapper: {
// ํ๋ก์ ํธ ํด๋ ๊ตฌ์กฐ์ ๋ง๊ฒ ๋ฐ๊ฟ์ฃผ์
'\\.svg$': '<rootDir>/__mocks__/svg.js',
'\\.svg$': '<rootDir>/src/__mocks__/svg.js',
'\\.svg$': '<rootDir>/src/mocks/svg.js',
},
}
์ด๋ ๊ฒ ๋ฐ๊พธ๊ณ ํ ์คํธ๋ฅผ ์คํํด ๋ณด๋ฉด
์ด๋ฆผ๋ ์์ง ๋ฐ๋ก ๊ฐ์ ์๋ฌ ๋ฐ์. ๋๋์ฒด ์?!?!?!? ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ธ๊ฐ. ์ด๋๋ถํฐ ํญํ ๊ฒ์์ด ์์๋๋ค.
๊ฒฐ๋ก ์ ํํํ๊ฒ๋ ์ ๊ทํํ์ ์์ ์ผ๋ก ํด๊ฒฐ๋๋ค.
module.exports = {
moduleNameMapper: {
// ํ๋ก์ ํธ ํด๋ ๊ตฌ์กฐ์ ๋ง๊ฒ ๋ฐ๊ฟ์ฃผ์
'^.+\\.(svg)$': '<rootDir>/src/mocks/svg.js',
},
}
\\.svg$
: ๋ฌธ์์ด ์ค..svg
๋ก ๋๋๋ ๋ถ๋ถ๋ง ๊ฒ์ฌํ๋ค.^.+\\.(svg)$
: ํ์ผ ๊ฒฝ๋ก ์ ์ฒด๋ฅผ ๊ฒ์ฌํ์ฌ.svg
๋ก ๋๋๋ ํ์ผ์ ์ฐพ๋๋ค.
??? ์ฌ์ ํ ๋ชจ๋ฅด๊ฒ ๋ค. ์ผ๋จ ํ๋ ์๊ฒ ๋ ๊ฑด ๊ณต์๋ฌธ์
์ถ๊ฐ๋ก ๋๋ svg.js
๋ฅผ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝํ๋ค.
export default 'svg';
export const ReactComponent = 'div';
์ฐธ๊ณ ์๋ฃ