Chaerin.dev

Storybook @svgr/webpack ์—๋Ÿฌ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

๋ฌธ์ œ์ƒํ™ฉ ๐Ÿšจ

storybook์—์„œ svg react component๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด @svgr/webpack ์„ ์„ค์น˜ํ•˜๊ณ  .storybook/main.js์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์›นํŒฉ ์„ค์ •์„ ํ•ด์ฃผ์—ˆ๋‹ค.

const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin')

module.exports = {
  stories: [
    '../stories/**/*.stories.mdx',
    '../stories/**/*.stories.@(js|jsx|ts|tsx)',
  ],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    'storybook-addon-next-router',
  ],
  webpackFinal: async config => {
    config.resolve.plugins.push(new TsconfigPathsPlugin({}))

    config.module.rules.unshift({
      test: /\.svg$/,
      use: ['@svgr/webpack'],
    })

    return config
  },
}

storybook์„ ์‹คํ–‰์‹œํ‚ค์ž ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

TypeError: this.getOptions is not a function

์ฐพ์•„๋ณด๋‹ˆ Vue์—์„œ sass/loader ๊ด€๋ จ ์—๋Ÿฌ๋งŒ ๋‚˜์˜ค๊ณ  storybook ๊ด€๋ จํ•œ ๋ฌธ์ œ๋Š” ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค. storybook github issue์— ๋“ฑ๋ก๋œ ์†”๋ฃจ์…˜์„ ๋‹คํ•ด๋ดค์ง€๋งŒ ํ•ด๊ฒฐ์ด ์•ˆ๋˜๋˜ ์ค‘ @svgr/webpack github ์ด์Šˆ์—์„œ ๋™์ผํ•œ ์—๋Ÿฌ๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. https://github.com/gregberge/svgr/issues/631

ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ๐Ÿ”จ

@svgr/webpack v6์˜ ๋ฌธ์ œ๋กœ ๋ฒ„์ „์„ v5.5.0์œผ๋กœ ๋‚ฎ์ถฐ์ฃผ๊ณ  ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ค๋ฉด ์ž˜ ๋Œ์•„๊ฐ„๋‹ค.

svg ReactCompoment๋„ ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


Written by@Chaerin
Tech Blog๐Ÿ“•

GitHubLinkedIn