You must use Storybook with webpack5!
npx sb@next init --builder webpack5
Remember to install all nedded packages because debugging babel
deps might be tricky.
Enjoy!
const MiniCssExtractPlugin = require("mini-css-extract-plugin"); | |
module.exports = { | |
"stories": [ | |
"../packages/components/**/*.stories.@(js|jsx|ts|tsx)" | |
], | |
"addons": [ | |
"@storybook/addon-links", | |
"@storybook/addon-essentials" | |
], | |
"core": { | |
"builder": "webpack5" | |
}, | |
webpackFinal: async (config, { configType }) => { | |
// `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION' | |
// You can change the configuration based on that. | |
// 'PRODUCTION' is used when building the static version of storybook. | |
// Check docs here: https://storybook.js.org/docs/react/configure/webpack#extending-storybooks-webpack-config | |
config.plugins.push(new MiniCssExtractPlugin({ filename: 'styles.css' })); | |
// Add Linaria loader after babel-loader | |
config.module.rules.splice(1, 0, { | |
test: /\.tsx?$/, | |
exclude: /node_modules/, | |
use: [ | |
{ | |
loader: require.resolve('@linaria/webpack-loader'), | |
options: { | |
sourceMap: true, | |
babelOptions: { | |
presets: [ | |
require.resolve('@babel/preset-env'), | |
require.resolve('@babel/preset-typescript'), | |
require.resolve('@linaria/babel-preset'), | |
], | |
}, | |
}, | |
}, | |
], | |
}); | |
// Replace CSS loader | |
const cssKey = config.module.rules.findIndex(x => x.test.toString() === "/\\.css$/"); | |
config.module.rules[cssKey] = { | |
test: /\.css$/, | |
use: [ | |
{ | |
loader: MiniCssExtractPlugin.loader | |
}, | |
{ | |
loader: 'css-loader', | |
options: { sourceMap: true }, | |
}, | |
], | |
}; | |
return config; | |
} | |
} |
{ | |
"name": "@oko-press/oko-ui", | |
"description": "OKO UI", | |
"version": "0.1.0", | |
"license": "MIT", | |
"main": "dist/index.js", | |
"repository": "git://github.com/OKO-press/oko-ui.git", | |
"private": true, | |
"engines": { | |
"node": ">=10" | |
}, | |
"scripts": { | |
"build": "lerna run build", | |
"dev": "storybook", | |
"storybook": "BROWSER=none start-storybook -p 6006", | |
"storybook:debug": "BROWSER=none start-storybook --debug-webpack -p 6006", | |
"build-storybook": "build-storybook", | |
"publish": "lerna build && lerna publish", | |
"types:check": "tsc --skipLibCheck --noEmit", | |
"format": "eslint packages/**/src --ext .js,.ts,.tsx" | |
}, | |
"lint-staged": { | |
"*.{js,ts,tsx}": [ | |
"yarn format" | |
] | |
}, | |
"husky": { | |
"hooks": { | |
"pre-commit": "yarn types:check && lint-staged", | |
"pre-push": "yarn types:check" | |
} | |
}, | |
"author": { | |
"name": "OKO.press" | |
}, | |
"workspaces": [ | |
"packages/components/*", | |
"packages/themes/*" | |
], | |
"devDependencies": { | |
"@babel/core": "^7.15.0", | |
"@babel/preset-env": "^7.15.0", | |
"@babel/preset-react": "^7.14.5", | |
"@babel/preset-typescript": "^7.15.0", | |
"@linaria/babel-preset": "^3.0.0-beta.4", | |
"@linaria/core": "^3.0.0-beta.4", | |
"@linaria/react": "^3.0.0-beta.7", | |
"@linaria/rollup": "^3.0.0-beta.7", | |
"@linaria/shaker": "^3.0.0-beta.7", | |
"@linaria/webpack-loader": "^3.0.0-beta.7", | |
"@rollup/plugin-commonjs": "^20.0.0", | |
"@rollup/plugin-typescript": "^8.2.5", | |
"@storybook/addon-actions": "^6.4.0-alpha.30", | |
"@storybook/addon-essentials": "^6.4.0-alpha.30", | |
"@storybook/addon-links": "^6.4.0-alpha.30", | |
"@storybook/builder-webpack5": "^6.4.0-alpha.30", | |
"@storybook/manager-webpack5": "^6.4.0-alpha.30", | |
"@storybook/react": "^6.4.0-alpha.30", | |
"@types/react": "^17.0.17", | |
"babel-loader": "^8.2.2", | |
"lerna": "^4.0.0", | |
"mini-css-extract-plugin": "^2.2.0", | |
"rollup": "^2.56.2", | |
"rollup-plugin-css-only": "^3.1.0", | |
"rollup-plugin-flat-dts": "^1.2.4", | |
"rollup-plugin-peer-deps-external": "^2.2.4", | |
"tslib": "^2.3.1", | |
"typescript": "^4.3.4" | |
}, | |
"peerDependencies": { | |
"react": "^17.0.2", | |
"react-dom": "^17.0.2" | |
}, | |
"dependencies": {}, | |
"resolutions": { | |
"webpack": "^5.0.0", | |
"css-loader": "^5.0.0", | |
"dotenv-webpack": "^6.0.0", | |
"html-webpack-plugin": "^5.0.0", | |
"style-loader": "^2.0.0", | |
"terser-webpack-plugin": "^5.0.0", | |
"webpack-dev-middleware": "^4.1.0", | |
"webpack-virtual-modules": "^0.4.2" | |
} | |
} |
Nice!