ストーリーブック、テールウィンド、およびタイプスクリプトを使用してコンポーネントライブラリを起動します.
26426 ワード
あなたの反応プロジェクトの高速コンポーネントをビルドします.
最後を見るresult
StoryBookは分離のUIコンポーネントを開発するためのツールです、これは我々が我々の主なアプリの外でこれらを持っている必要があることを意味し、必要な変更を行い、それらがどのように見えるかを知る我々のアプリでそれらをインポートします.
デザインシステムはあらゆる製品開発プロセスの重要な部分になりました、そして、可能性はあなたがすでに1で働くということです.このシステムは、デザイナーと開発者のためのスタイルガイドを提供します.さまざまなパターンやバリエーションを持つUIコンポーネントがたくさんあります.これは、ストーリーブックを使用するのに最適なシナリオです.
Cookieは非常にカスタマイズ可能な、低レベルのCSSフレームワークです.それは多くの他のフレームワークのようなUIキットではありません、あなたのウェブサイトがどのように見えるかを完全に制御します.
プロジェクトからスタートします
では、このスクリプトを
あなたがsassを使うと決めるならば、インストールするのを忘れないでください
クリエイトア
新規作成
StoryBookでtypescriptファイルを処理するには、WebPackの設定を拡張する必要があります.プロジェクトの根元に新しいフォルダを作りましょう
まずは、必要な依存関係をインストールしましょう.
で
クリエイトア
それは私たちのボタンです!しかし、スタイルなしで.新しいものを作ることによって
注意: あなたがTailwindファイルを輸入している問題に直面するならば、あなたはAを加える必要があります プロンプトが表示できない場合は、コンポーネントファイルを確認してください.このような反応をインポートしたりインポートしたりするようにしてください.または使用しないようにします
我々のアプリは素晴らしいが、どのように我々はそれが良く見えるように知っていますか?はい、暗いモードで.
まず、作成
前に
クリエイトア
今あなたがそれを持っている、StoryBookはあなたのTailwindのコンポーネントとTypeScriptのサポートとダークモードで実行している.
コードをチェックrepo .
最後を見るresult
物語は何ですか。
StoryBookは分離のUIコンポーネントを開発するためのツールです、これは我々が我々の主なアプリの外でこれらを持っている必要があることを意味し、必要な変更を行い、それらがどのように見えるかを知る我々のアプリでそれらをインポートします.
デザインシステムはあらゆる製品開発プロセスの重要な部分になりました、そして、可能性はあなたがすでに1で働くということです.このシステムは、デザイナーと開発者のためのスタイルガイドを提供します.さまざまなパターンやバリエーションを持つUIコンポーネントがたくさんあります.これは、ストーリーブックを使用するのに最適なシナリオです.
尾風の利点
Cookieは非常にカスタマイズ可能な、低レベルのCSSフレームワークです.それは多くの他のフレームワークのようなUIキットではありません、あなたのウェブサイトがどのように見えるかを完全に制御します.
セットアップの反応アプリとインストール風をインストールします。
プロジェクトからスタートします
create-react-appp
.npx create-react-app storybook-ts --template typescript
依存関係をインストールしましょう.npm install tailwindcss postcss-cli autoprefixer
新しいファイルを作成するpostcss.config.js
下のコードでアプリケーションのルートで.module.exports = {
plugins: [require('tailwindcss'), require('autoprefixer')],
};
私たちはプロセスtailwind
with postcss
, and autoprefixer
CSSをパースし、ブラウザサポートのためのベンダープレフィックスを追加します.では、このスクリプトを
package.json
ファイル.{
"scripts": {
...
"build:tailwind": "postcss src/scss/base.scss -o src/scss/tailwind.scss"
},
...
}
新規作成scss
フォルダ内src
. 私が使用するので、私はsassファイルを使用しますbase.scss
より多くのクラスを書くにはcss
. あなたがsassを使うと決めるならば、インストールするのを忘れないでください
node-sass
.クリエイトア
base.scss
ファイルの内部scss
このコンテンツを持つフォルダ.@tailwind base;
@tailwind components;
@tailwind utilities;
このコマンドをコンソールで実行し、テール風ファイルを生成します.npm run build:tailwind
生成されたTruwindファイルをアプリケーションコンポーネントに配置します.// App.tsx
import './scss/tailwind.scss';
このチュートリアルでは、Tailwindの既定の設定で動作するようにして、お客様のニーズに合わせて調整してください.このコマンドを実行するnpx tailwind init
そして、風の設定ファイルが生成されると、あなたのために働く価値を追加することができます.これはTailwindのデフォルトですconfiguration , 参考にしてください.新規作成
components
フォルダインサイダーsrc
を追加し、button.tsx
ファイル.import React, { FC } from 'react';
type ButtonTypes = {
/**
* Label of the button
*/
label: string;
/**
* Boolean value to define the button style
*/
outlined?: boolean;
/**
* Button click action
*/
onClick(): void;
}
const BASE_BUTTON = 'rounded outline-none shadow py-3 px-12 font-normal uppercase tracking-wider text-lg'
const CONTAINED_BUTTON = `${BASE_BUTTON} bg-teal-400 border border-teal-400 text-white`
const OUTLINED_BUTTON = `${BASE_BUTTON} border border-teal-400 text-teal-400`
export const Button:FC<ButtonTypes> = ({ onClick, label = "Some label", outlined }) => {
return (
<button
onClick={onClick}
className={outlined ? OUTLINED_BUTTON : CONTAINED_BUTTON}
>
<span>{label}</span>
</button>
)
};
物語に飛び込みましょう
StoryBookでtypescriptファイルを処理するには、WebPackの設定を拡張する必要があります.プロジェクトの根元に新しいフォルダを作りましょう
.storybook
を作成し、main.js
ファイル内部.まずは、必要な依存関係をインストールしましょう.
npm install --save-dev @storybook/react @storybook/preset-create-react-app babel-loader react-docgen-typescript-loader @storybook/addon-actions @storybook/addon-info @storybook/addon-knobs @storybook/addon-notes @storybook/addons
我々はアドオンを使用して我々の物語に高度な機能を有効にします.で
main.js
次のコードを追加します.module.exports = {
stories: ['../src/stories/**/*.stories.tsx'],
addons: [
'@storybook/addon-actions/register',
'@storybook/addon-knobs/register',
'@storybook/addon-notes/register',
],
webpackFinal: async config => {
config.module.rules = [
...config.module.rules,
{
test: /\.(ts|tsx)$/,
use: [
{
loader: require.resolve("babel-loader"),
options: {
presets: [require.resolve("babel-preset-react-app")]
}
},
require.resolve("react-docgen-typescript-loader")
]
}
],
config.resolve.extensions.push('.ts', '.tsx');
return config;
},
};
私たちの最初の物語を作成しましょう.クリエイトア
stories
フォルダ内src
, と呼ばれるファイルbutton.stories.tsx
. 我々はいくつかのアドオンを追加する予定ですが、直接の絵本からボタンの小道具を変更します.import React from "react";
import { Button } from '../components/button';
import { action } from '@storybook/addon-actions';
import { withKnobs, text, boolean } from "@storybook/addon-knobs";
export default {
title: "Button",
decorators: [withKnobs]
};
export const primary = () => {
const label = text("Label", "See now");
const outlined = boolean("Oultined", false);
return (
<Button onClick={action('clicked')} outlined={outlined} label={label} />
)
};
スクリプトを追加しましょうpackage.json
ファイルを実行するファイル.{
"scripts": {
...
"build:tailwind": "postcss src/scss/base.scss -o src/scss/tailwind.scss",
"storybook": "start-storybook -p 5000"
},
...
}
我々が走るならばnpm run storybook
我々は、このようなものを見ます.それは私たちのボタンです!しかし、スタイルなしで.新しいものを作ることによって
Layout
コンポーネント.私たちが今作成しているすべてのファイルは、内側になります.storybook
フォルダ.import React from 'react';
import '../src/scss/tailwind.scss';
const Layout = ({ children }) => {
return (
<div className="px-20 py-10">
{children}
</div>
)
}
export default Layout;
クリエイトアpreview.js
ファイル.import React from 'react';
import { addDecorator } from '@storybook/react';
import { withInfo } from '@storybook/addon-info';
import Layout from './Layout';
addDecorator(storyFn => <Layout>{storyFn()}</Layout>);
addDecorator(withInfo({
inline: true,
propTablesExclude: [Layout]
}));
あなたが再びStoryBookを走らせるならば、我々の話は現在このように見えます.Infoアドオンは、ソースコードとPropTypeテーブルを生成します.注意:
sass-loader
Webpackの設定にmain.js
. export default
コンポーネントです. import * as React from 'react';
import React, { FC } from 'react';
export const Button = () => {} //don't use export default.
ダークモード。
我々のアプリは素晴らしいが、どのように我々はそれが良く見えるように知っていますか?はい、暗いモードで.
まず、作成
manager.js
ファイルを追加し、次のコードを追加します.import { addons } from '@storybook/addons';
import { themes } from '@storybook/theming';
addons.setConfig({
theme: themes.dark,
});
これはあなたの童話アプリに暗いテーマを追加します.前に
preview.js
ファイルを追加し、情報のスタイルを変更します.import React from 'react';
import { addDecorator } from '@storybook/react';
import { withInfo } from '@storybook/addon-info';
import Layout from './Layout';
addDecorator(storyFn => <Layout>{storyFn()}</Layout>);
addDecorator(withInfo({
inline: true,
styles: (base) => ({
...base,
infoBody: {
...base.infoBody,
backgroundColor: '#303030',
color: 'white',
},
source: {
h1: {
margin: '20px 0',
padding: '0 0 5px 0',
fontSize: '25px',
borderBottom: '1px solid #EEE',
},
},
}),
propTablesExclude: [Layout]
}));
私たちはほとんどそれを持っている.しかし、PropTypeテーブルのテキストはよく見えません.クリエイトア
preview-body.html
このコードを追加します.<style>
.info-table, .info-table td, .info-table th{
color: #fff;
}
</style>
再びストーリーブックを実行します.今あなたがそれを持っている、StoryBookはあなたのTailwindのコンポーネントとTypeScriptのサポートとダークモードで実行している.
コードをチェックrepo .
Reference
この問題について(ストーリーブック、テールウィンド、およびタイプスクリプトを使用してコンポーネントライブラリを起動します.), 我々は、より多くの情報をここで見つけました https://dev.to/elisealcala/start-a-component-library-with-storybook-tailwind-and-typescript-2ofaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol