$ npm i -D @storybook/cli
// sassを使う場合(使用できないバージョンがあるため注意、記事執筆時点でsass-loaderはv10しか使えない)
$ npm i -D style-loader css-loader sass-loader@^10.0.0
// 起動した時 Cannot find module 'sass' の表示が出たら sass もインストールしておく
$ npm i -D sass
// アドオンを使う場合(使いやすそうなプラグインを厳選)
$ npm i @pickra/copy-code-block @storybook/addon-knobs @storybook/addon-a11y @storybook/addon-notes @storybook/addon-docs
$ npx sb init
$ npm run storybook
sassとアドオンを使う場合、.storybook/main.js に下記を追記。
module.exports = {
〜
"addons": [
"@storybook/addon-links", // デフォルトで指定されている
"@storybook/addon-essentials", // デフォルトで指定されている
'@storybook/addon-knobs',
'@storybook/addon-a11y',
'@storybook/addon-notes/register',
'@storybook/addon-docs',
],
webpackFinal: async(config, {configType}) => {
config.module.rules.push({
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
});
return config;
}
}
@storybook/addon-a11y を使用する場合は .storybook/preview.js に下記を追記。
import { addDecorator } from '@storybook/html'
import { withA11y } from '@storybook/addon-a11y'
addDecorator(withA11y);
〜
下記のようなテンプレートファイルファイルを作成。
import copyCodeBlock from '@pickra/copy-code-block'
import { withKnobs, text, boolean, number } from '@storybook/addon-knobs';
import './_heading.scss'
import notes from './heading.md';
export default {
title: 'Heading',
decorators: [withKnobs],
parameters: {
notes,
},
}
export const Heading = () => {
const tmpText = text('見出しテキスト', '見出しが入ります');
const Templete = `
<h2 class="c-text">${tmpText}</h2>
`;
return (Templete + copyCodeBlock(Templete));
}