1
0

main.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { join, dirname, resolve } from 'path'
  2. /**
  3. * This function is used to resolve the absolute path of a package.
  4. * It is needed in projects that use Yarn PnP or are set up within a monorepo.
  5. */
  6. function getAbsolutePath(value) {
  7. return dirname(require.resolve(join(value, 'package.json')))
  8. }
  9. /** @type { import('@storybook/react-webpack5').StorybookConfig } */
  10. const config = {
  11. stories: [
  12. './cljs/*_story.js',
  13. '../src/**/*.story.@(js|jsx|mjs|ts|tsx)'
  14. ],
  15. addons: [
  16. getAbsolutePath('@storybook/addon-links'),
  17. getAbsolutePath('@storybook/addon-essentials'),
  18. getAbsolutePath('@storybook/addon-onboarding'),
  19. getAbsolutePath('@storybook/addon-interactions'),
  20. getAbsolutePath('@storybook/addon-toolbars')
  21. ],
  22. framework: {
  23. name: getAbsolutePath('@storybook/react-webpack5'),
  24. options: {},
  25. },
  26. docs: {
  27. autodocs: 'tag',
  28. },
  29. features: {
  30. storyStoreV7: false
  31. },
  32. async webpackFinal(config) {
  33. // module name resolver
  34. config.resolve.alias = {
  35. '@/components': resolve(__dirname, '../@/components'),
  36. '@/lib': resolve(__dirname, '../@/lib')
  37. }
  38. // NOTE: Don't use .babelrc for this. Because the parcel bundler share
  39. // the babel config with storybook webpack from root path.
  40. const babelLoaderRule = config.module.rules.find(
  41. (rule) => rule.test.toString() === /\.(mjs|tsx?|jsx?)$/.toString()
  42. )
  43. // babelLoaderRule.include?.push(__dirname)
  44. const babelLoaderPresets = babelLoaderRule?.use[0].options.presets
  45. babelLoaderPresets.unshift(
  46. [require.resolve('@babel/preset-env'), {
  47. 'targets': {
  48. 'chrome': 100,
  49. 'safari': 15,
  50. 'firefox': 91
  51. }
  52. }]
  53. )
  54. babelLoaderPresets.push('@babel/preset-typescript')
  55. // postcss loader
  56. config.module.rules.push({
  57. test: /\.css$/,
  58. use: [
  59. {
  60. loader: 'postcss-loader',
  61. options: {},
  62. },
  63. ],
  64. })
  65. return config
  66. }
  67. }
  68. export default config