React Storybook을 v5.3에서 v6으로 마이그레이션한 방법
18578 단어 reactstorybookfrontendjavascript
내 간단한 이전 구성을 제공하고 v5.3에서 v6으로 업데이트하는 모험을 알려 드리겠습니다.
참고: v5.3으로 업데이트할 때 Storybook 구성을 변경하지 않았기 때문에 v5에서도 작동해야 한다고 생각합니다.
글쎄, v5.3에 대한 내 구성은 다음과 같습니다.
// .storybook/config.js
import {addParameters} from '@storybook/react';
import '../src/styles/App.scss'; // all my app styles because I don't import them in each component
import './styles.scss'; // with some overrided styles for Storyb
import theme from './theme';
addParameters({
options: {theme}
});
// .storybook/main.js
module.exports = {
stories: ['../src/components/**/*.stories.js'],
};
// .storybook/theme.js
import {create} from '@storybook/theming';
import gigedsLogo from '../src/statics/logo.png';
export default create({
base: 'light',
brandTitle: 'Gigeds',
brandImage: gigedsLogo,
colorSecondary: '#de2020'
});
// .storybook/webpack.config.js
const path = require('path');
function resolve(dir) {
return path.join(__dirname, dir);
}
module.exports = {
module: {
rules: [
{
test: /\.(sa|sc|c)ss$/,
use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'],
},
{
test: /\.(jpg|jpeg|png|svg|gif)$/,
use: [
{
loader: 'file-loader',
options: {
limit: 1000000,
name: `statics/images/[name].[ext]`,
},
},
],
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'file-loader',
options: {
limit: 10000,
name: `statics/fonts/[name].[ext]`,
},
},
]
},
resolve: {
extensions: ['.js', '.jsx', '.json', '.css', '.scss'],
modules: [resolve('../node_modules')],
alias: {
components: resolve('../src/components'),
views: resolve('../src/views'),
statics: resolve('../src/statics'),
},
},
};
보시다시피 구성은 플러그인 없이 테마 및 사용자 정의 Webpack 구성에 약간의 변경이 있는 매우 간단합니다.
스토리북이 제대로 작동하고 v5.3에서 v6으로 업데이트했다고 상상해 보세요. 그런 다음 스크립트
yarn sb
(귀하의 경우에는 yarn storybook
가 될 수 있음)를 실행하여 모든 것이 예상대로 작동하는지 확인합니다... 컴파일 중... 그리고 BAM!ERR! Error: You have both a "main" and a "config". Please remove the "config" file from your configDir
흠... 내 구성을 제거하면 내 스타일과 사용자 정의 테마를 어딘가에 로드해야 합니다 😕. 글쎄, 우리
config.js
를 제거하고 문서로 이동하여 수정 방법을 살펴보겠습니다.theme configuration documentation 으로 가자. 빙고! 몇 가지 새 패키지 설치
yarn add --dev @storybook/addons @storybook/theming
그런 다음 ./manager.js
를 만들어 사용자 정의 테마를 로드하세요 💪// ./manager.js
@see https://storybook.js.org/docs/react/configure/theming#create-a-theme-quickstart
import { addons } from '@storybook/addons';
import { themes } from '@storybook/theming';
addons.setConfig({
theme: themes.dark,
});
참고: 처음에는 내
./config.js
에 있는 모든 항목을 복사하여 붙여넣은 다음yarn sb
실행했는데 오류가 발생했습니다.ERROR in ./src/styles/App.scss 2:0
Module parse failed: Unexpected character '@' (2:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
v6에서 더 이상 필요하지 않은
App.scss
파일을 가져오기 때문이었습니다.자, 그럼 또 달려가서
yarn sb
...😏 뱁! 블러디 터미널😨A lot of errors, one per `.jsx` file which has `.scss` import.
내 생각은 어딘가에 webpack 구성을 추가하는 것이 었습니다. 꽤 분명했던 문서custom webpack configuration에서 잠시 다이빙을 한 후 모든 스토리를 로드할 위치에 의문이 생겼고 문서에는 스토리 로딩 + 웹팩 구성에 대한 언급이 전혀 없습니다. 시각. 그들은 항상 별도로 취급됩니다. 그래서 그냥 같은 모듈에 추가했습니다.
// ./main.js
const custom = require('./webpack.config.js');
module.exports = {
stories: ['../src/components/**/*.stories.js'],
webpackFinal: (config) => {
return {
...config,
module: {
...config.module,
rules: custom.module.rules,
},
resolve: {
...config.resolve,
...custom.resolve,
}
};
},
};
그런 다음 실행
yarn sb
하고... 붐? (BAM! = 나쁨, BOOM! = 멋짐) 브라우저가 열렸습니다. 스토리북 로드 중... 로드 중... 로드 중... 😕 아직 뭔가 부족합니다... 터미널을 확인합시다. 오! 많은 경고(구성 요소당 하나):...
WARNING in ./src/components/alert/Alert.stories.js 10:4
Module parse failed: Unexpected token (10:4)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
...
웹팩 구성에
babel-loader
가 누락된 것 같습니다. 제 경우에는 Storybook v5.3이 필요하지 않았으므로 추가해 보겠습니다.// .storybook/webpack.config.js
const path = require('path');
function resolve(dir) {
return path.join(__dirname, dir);
}
module.exports = {
module: {
rules: [
...
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: [
'babel-loader',
{
loader: 'eslint-loader',
options: {
cache: true,
emitWarning: true,
},
},
],
},
...
이제 다시
run sb
, 컴파일 중... 브라우저가 열렸습니다... 스토리북 로드 중... 로드 중... BOOM!💓 성공했습니다! 모든 구성 요소가 포함된 스토리북 🎉 쉬울까요? 😉요약
나와 같은 구성이 있는 경우 다음을 수행합니다.
추가 정보: Migration documentation 및 Storybook configuration
읽어주셔서 감사합니다. 댓글을 환영합니다.
Antonios Ntoumas의 Pixabay 이미지
Reference
이 문제에 관하여(React Storybook을 v5.3에서 v6으로 마이그레이션한 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ozaytsev86/how-i-migrated-react-storybook-from-v5-3-to-v6-3knc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)