デフォルトでは、反応型アプリのプロップタイプは本番環境では実行されません。これはパフォーマンスを向上させるために良いことだと思います。ただし、作成した Storybook があり、静的サイトに展開しています。 Storybookには、ドキュメントと呼ばれるアドオンがあり、コンポーネントの小道具タイプを検出し、読みやすいドキュメントの小道具タイプのテーブルを作成します。
ストーリーブックをローカルで実行すると、すべてが完璧に機能します。プロップタイプが検出され、このテーブルが生成されます。
SpinningLoader.propTypes = {
color: PropTypes.string,
size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
};
ただし、プロップタイプはデフォルトで本番環境で無効になっているためです。ストーリーブックが静的サイトに展開されている場合は検出できません。
プロダクションでプロップタイプを有効にする方法はありますか?それとも他の回避策ですか?
セットアップの詳細を見ないで知ることは少し難しいです。デフォルトのストーリーブックコマンドと追加の構成なしで構築する場合は、「正常に動作する」べきです...
コメントで述べたように、 Storybookには特定のビルドコマンドがありますpackage.json
に追加して、静的アプリとしてエクスポートできます。
"scripts": {
"build-storybook": "build-storybook -c .storybook -o .out"
}
そのコマンドを使用してもまだ機能しない場合は、カスタムのWebpack /ビルドワークフローを使用していますか?それらも投稿できますか?
参照用に最小限のリポジトリを作成しました。これは、設定の比較に役立つ場合があります。 package.json
のパッケージの他に、実際には3つのファイルのみです。 Storybook config、a React component、およびComponent Story:
。storybook/main.js
module.exports = {
stories: ['../src/**/*.stories.[tj]s'],
addons: ['@storybook/addon-docs'],
};
src/components/message/message.js
import React from 'react'
import PropTypes from 'prop-types'
const Message = function Message({ text, color }) {
return (<div style={{ color }}>{text}</div>)
}
Message.propTypes = {
text: PropTypes.string.isRequired,
color: PropTypes.string.isRequired,
}
export default Message
src/components/message/message.stories.js
import React from 'react'
import Message from './message'
export default { title: 'Message', component: Message }
export const withText = () => <Message text="Hello World" color="green" />
build-storybook
コマンド、cd .out
、次にnpx live-server
を実行すると、静的に構築されたストーリーブックサイトが表示され、Message
コンポーネントと[ドキュメント]タブが表示されますそれはプロップタイプを含みます:
参照用の完全なリポジトリ