⟵ Writing
Adding storybook to a Typescript + Next.js project
2020-01-20
The recommended way of adding storybook to a project using TypeScript on the official storybook documentation doesn't actually work. It required a bit of tweaking but here is how to get it to work alongside a Next.js project.
My folder structure is as follows:
1├── .storybook
2├── public
3│ ├── favicon.ico
4│ ├── ...
5└── src
6 ├── components
7 │ ├── Accordion
8 │ ├── Alert
9 │ ├── Box
10 │ ├── ...
11 ├── pages
12 └── util
13
With each storybook.tsx
file belonging inside it's respective component folder.
First fetch the necessary libraries.
yarn add @storybook/react babel-loader babel-preset-react-app
Then to get storybook working add the two following files.
./storybook/config.js
1import { configure } from '@storybook/react'
2
3configure(require.context('../src/components', true, /\.stories\.tsx?$/), module)
4
./storybook/webpack.config.js
1module.exports = ({ config }) => {
2 config.module.rules.push({
3 test: /\.(ts|tsx)$/,
4 loader: require.resolve('babel-loader'),
5 options: {
6 presets: [require.resolve('babel-preset-react-app')],
7 },
8 });
9
10 config.resolve.extensions.push('.ts', '.tsx');
11 return config;
12};
13