main.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const path = require("path")
  2. const AssetsDir = path.join(__dirname, "..", "assets")
  3. module.exports = {
  4. stories: ["../stories/**/*.stories.(js|jsx|ts|tsx|mdx)"],
  5. addons: [
  6. "@storybook/addon-actions",
  7. "@storybook/addon-links",
  8. "@storybook/addon-knobs",
  9. "@storybook/addon-storysource",
  10. "storybook-addon-jsx/register",
  11. "@storybook/addon-docs"
  12. ],
  13. webpackFinal: async config => {
  14. // Disable the Storybook internal-`.svg`-rule for components loaded from our app.
  15. const svgRule = config.module.rules.find(rule => "test.svg".match(rule.test))
  16. svgRule.exclude = [AssetsDir]
  17. config.module.rules.push({
  18. test: /\.svg$/i,
  19. include: [AssetsDir],
  20. use: [
  21. {
  22. loader: "@svgr/webpack",
  23. options: {}
  24. }
  25. ]
  26. })
  27. config.module.rules.push({
  28. test: /\.(ts|tsx)$/,
  29. use: [
  30. {
  31. loader: require.resolve("babel-loader"),
  32. options: {
  33. presets: [
  34. "@babel/preset-env",
  35. "@babel/preset-typescript",
  36. "@babel/preset-react",
  37. "@emotion/babel-preset-css-prop"
  38. ]
  39. }
  40. },
  41. // Optional
  42. {
  43. loader: require.resolve("react-docgen-typescript-loader")
  44. }
  45. ]
  46. })
  47. config.resolve.extensions.push(".ts", ".tsx")
  48. return config
  49. }
  50. }