| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import { join, dirname, resolve } from 'path'
- /**
- * This function is used to resolve the absolute path of a package.
- * It is needed in projects that use Yarn PnP or are set up within a monorepo.
- */
- function getAbsolutePath(value) {
- return dirname(require.resolve(join(value, 'package.json')))
- }
- /** @type { import('@storybook/react-webpack5').StorybookConfig } */
- const config = {
- stories: [
- './cljs/*_story.js',
- '../src/**/*.story.@(js|jsx|mjs|ts|tsx)'
- ],
- addons: [
- getAbsolutePath('@storybook/addon-links'),
- getAbsolutePath('@storybook/addon-essentials'),
- getAbsolutePath('@storybook/addon-onboarding'),
- getAbsolutePath('@storybook/addon-interactions'),
- getAbsolutePath('@storybook/addon-toolbars')
- ],
- framework: {
- name: getAbsolutePath('@storybook/react-webpack5'),
- options: {},
- },
- docs: {
- autodocs: 'tag',
- },
- features: {
- storyStoreV7: false
- },
- async webpackFinal(config) {
- // module name resolver
- config.resolve.alias = {
- '@/components': resolve(__dirname, '../@/components'),
- '@/lib': resolve(__dirname, '../@/lib')
- }
- // NOTE: Don't use .babelrc for this. Because the parcel bundler share
- // the babel config with storybook webpack from root path.
- const babelLoaderRule = config.module.rules.find(
- (rule) => rule.test.toString() === /\.(mjs|tsx?|jsx?)$/.toString()
- )
- // babelLoaderRule.include?.push(__dirname)
- const babelLoaderPresets = babelLoaderRule?.use[0].options.presets
- babelLoaderPresets.unshift(
- [require.resolve('@babel/preset-env'), {
- 'targets': {
- 'chrome': 100,
- 'safari': 15,
- 'firefox': 91
- }
- }]
- )
- babelLoaderPresets.push('@babel/preset-typescript')
- // postcss loader
- config.module.rules.push({
- test: /\.css$/,
- use: [
- {
- loader: 'postcss-loader',
- options: {},
- },
- ],
- })
- return config
- }
- }
- export default config
|