main.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { createRequire } from "node:module";
  2. import type { StorybookConfig } from "@storybook/nextjs";
  3. const resolve = createRequire(import.meta.url).resolve;
  4. const config = {
  5. framework: "@storybook/nextjs",
  6. stories: [
  7. "../src/**/*.mdx",
  8. "../src/**/?(*.)story.tsx",
  9. "../src/**/?(*.)stories.tsx",
  10. ],
  11. features: {
  12. backgroundsStoryGlobals: true,
  13. },
  14. addons: [
  15. {
  16. name: "@storybook/addon-essentials",
  17. options: {
  18. backgrounds: false,
  19. measure: false,
  20. },
  21. },
  22. "@storybook/addon-themes",
  23. {
  24. name: "@storybook/addon-styling-webpack",
  25. options: {
  26. rules: [
  27. {
  28. test: /\.s[ac]ss$/i,
  29. use: [
  30. "style-loader",
  31. {
  32. loader: "css-loader",
  33. options: {
  34. modules: {
  35. auto: true,
  36. localIdentName: "[name]__[local]--[hash:base64:5]",
  37. exportLocalsConvention: "as-is",
  38. },
  39. importLoaders: 1,
  40. esModule: false,
  41. },
  42. },
  43. {
  44. loader: "sass-loader",
  45. options: { implementation: resolve("sass") },
  46. },
  47. ],
  48. },
  49. ],
  50. },
  51. },
  52. ],
  53. webpackFinal: (config) => {
  54. config.resolve = {
  55. ...config.resolve,
  56. extensionAlias: {
  57. ...config.resolve?.extensionAlias,
  58. ".js": [".js", ".ts"],
  59. ".jsx": [".jsx", ".tsx"],
  60. },
  61. };
  62. for (const rule of config.module?.rules ?? []) {
  63. if (
  64. typeof rule === "object" &&
  65. rule !== null &&
  66. rule.test instanceof RegExp &&
  67. rule.test.test(".svg")
  68. ) {
  69. rule.exclude = /\.svg$/i;
  70. }
  71. }
  72. config.module = {
  73. ...config.module,
  74. rules: [
  75. ...(config.module?.rules ?? []),
  76. {
  77. test: /\.svg$/i,
  78. use: ["@svgr/webpack"],
  79. },
  80. ],
  81. };
  82. return config;
  83. },
  84. } satisfies StorybookConfig;
  85. export default config;