æé«ã®ãªãŒãã³ãœãŒã¹ ãããžã§ã¯ããæã€ããšã¯ã§ããŸãããé©åãªããã¥ã¡ã³ãããªããã°ããããžã§ã¯ãã¯æ±ºããŠæ®åããªãå¯èœæ§ããããŸãã ãªãã£ã¹ã§ã¯ãé©åãªææžãããã°ãåã質åã«çããããšãã§ããªããªããŸãã ãŸããææžåããããšã§ãäž»èŠãªåŸæ¥å¡ãäŒç€ŸãèŸãããã圹å²ãå€ãã£ããããå Žåã§ãã人ã ããããžã§ã¯ããç解ã§ããããã«ãªããŸãã ç掻ã¬ã€ãã©ã€ã³ã¯ãããŒã¿ã®æŽåæ§ã確ä¿ããã®ã«åœ¹ç«ã¡ãŸãã
é·ãããã¹ããèšè¿°ããå¿ èŠãããå ŽåãMarkdown 㯠HTML ã®åªãã代æ¿æ段ã§ãã å Žåã«ãã£ãŠã¯ãMarkdown æ§æã ãã§ã¯äžååãªå ŽåããããŸãã ãã®å Žåããã®äžã§ HTML ã䜿çšã§ããŸãã ããšãã°ãã«ã¹ã¿ã èŠçŽ ã§ãã ãããã£ãŠããã€ãã£ã Web ã³ã³ããŒãã³ãã䜿çšããŠãã¶ã€ã³ ã·ã¹ãã ãæ§ç¯ããŠããå Žåãããããããã¹ã ããã¥ã¡ã³ãã«ç°¡åã«å«ããããšãã§ããŸãã React (ãŸã㯠Preact ã Vue ãªã©ã®ä»ã® JSX ãã¬ãŒã ã¯ãŒã¯) ã䜿çšããŠããå Žåã¯ãMDX ã§åãããšãè¡ãããšãã§ããŸãã
ãã®èšäºã§ã¯ãããã¥ã¡ã³ãã®äœæãšã¬ã€ãã©ã€ã³ã®äœæã®ããã®ããŒã«ã®æŠèŠã説æããŸãã ããã«ãªã¹ããããŠãããã¹ãŠã®ããŒã«ã MDX ã䜿çšããŠããããã§ã¯ãããŸããããããã¥ã¡ã³ã ããŒã«ã« MDX ãå«ãŸããããšãå¢ããŠããŸãã
MDXãšã¯äœã§ããïŒ
ãã¡ã€ã« .mdx
ã®æ§æ㯠Markdown ãšåãã§ãããã€ã³ã¿ã©ã¯ãã£ã㪠JSX ã³ã³ããŒãã³ããã€ã³ããŒãããŠã³ã³ãã³ãã«åã蟌ãããšãã§ããŸãã Vue ã³ã³ããŒãã³ãã®ãµããŒãã¯ã¢ã«ãã¡çã§ãã MDX ã®äœ¿çšãéå§ããã«ã¯ããCreate React Appããã€ã³ã¹ããŒã«ããã ãã§ãã Next.js ãš Gatsby ã®ãã©ã°ã€ã³ããããŸãã Docusaurus ã®æ¬¡ã®ããŒãžã§ã³ (ããŒãžã§ã³ 2) ããã€ãã£ã ãµããŒããæã€äºå®ã§ãã
Docusaurus ã䜿çšããŠããã¥ã¡ã³ããäœæãã
ããã¥ãµãŠã«ã¹æ°ã¯ãã§ã€ã¹ããã¯ã«ããæžããã 圌ã㯠React ãé€ããã¹ãŠã®ãªãŒãã³ãœãŒã¹ ãããžã§ã¯ãã§ããã䜿çšããŠããŸãã 瀟å€ã§ã¯ãReduxãPrettierãGulpãBabel ã§äœ¿çšãããŠããŸãã
Docusaurus ã䜿çšãããããžã§ã¯ãã
Docusaurus ã䜿çšããŠæžãããšãã§ããŸã ä»»æã® ããã³ããšã³ãã®èª¬æã ãã§ãªãããã¥ã¡ã³ããå¿ èŠã§ãã å éšã«ã¯ React ãçµã¿èŸŒãŸããŠããŸããã䜿çšããã®ã«ç²ŸéããŠããå¿ èŠã¯ãããŸããã Markdown ãã¡ã€ã«ã䜿çšãããšãã²ãšã€ãŸã¿ã®éæ³ã§ãé©åã«æ§é åããããã©ãŒããããããèªã¿ãããçŸãããã¶ã€ã³ã®ããã¥ã¡ã³ããå®æããŸãã
Redux Web ãµã€ãã§ã¯ãæšæºã® Docusaurus ãã³ãã¬ãŒããåç
§ã§ããŸãã
Docusaurus ã§æ§ç¯ããã Web ãµã€ãã«ã¯ãMarkdown ããŒã¹ã®ããã°ãå«ããããšãã§ããŸãã Prism.js ã¯æ§æ匷調衚瀺ã®ããã«ããã«æ¥ç¶ãããŸãã Docusaurus ã¯æ¯èŒçæè¿ç»å Žãããšããäºå®ã«ãããããããStackShare ã§ã¯ 2018 幎ã®æé«ã®ããŒã«ãšããŠèªããããŸããã
ãã®ä»ã®ã³ã³ãã³ãäœæãªãã·ã§ã³
Docusaurus ã¯ãããã¥ã¡ã³ãã®äœæã«ç¹åããŠèšèšãããŠããŸãã ãã¡ãããWeb ãµã€ããäœæããæ¹æ³ã¯ç¡æ°ã«ãããŸããä»»æã®èšèªãCMS ã§ç¬èªã®ãœãªã¥ãŒã·ã§ã³ãå±éããããšããéçãµã€ã ãžã§ãã¬ãŒã¿ãŒã䜿çšããããšãã§ããŸãã
ããšãã°ãReactãIBM ãã¶ã€ã³ ã·ã¹ãã ãApolloãGhost CMS ã®ããã¥ã¡ã³ãã§ã¯ãããã°ã§ãã䜿çšãããéçãµã€ã ãžã§ãã¬ãŒã¿ãŒã§ãã Gatsby ã䜿çšãããŠããŸãã Vue ã䜿çšããå Žåã¯ãVuePress ãæé©ãªãªãã·ã§ã³ã§ãã ãã XNUMX ã€ã®ãªãã·ã§ã³ã¯ãPython ã§æžããããžã§ãã¬ãŒã¿ãŒ (MkDocs) ã䜿çšããããšã§ãã ããã¯ãªãŒãã³ãœãŒã¹ã§ãããåäžã® YAML ãã¡ã€ã«ã䜿çšããŠæ§æãããŸãã GitBook ãè¯ãéžæè¢ã§ãããç¡æãªã®ã¯ãããªãã¯ããã³éå¶å©ããŒã ã®ã¿ã§ãã Git ã䜿çšããŠããŒããŠã³ ãã¡ã€ã«ãã¢ããããŒãããGithub ã§æäœããããšãã§ããŸãã
ææžåã³ã³ããŒãã³ã: DoczãStorybookãStyleguidist
ã¬ã€ãã©ã€ã³ãã·ã¹ãã èšèšãã³ã³ããŒãã³ã ã©ã€ãã©ãªãäœãšåŒãã§ããæè¿éåžžã«äººæ°ããããŸãã React ã®ãããªã³ã³ããŒãã³ã ãã¬ãŒã ã¯ãŒã¯ãšããã§èª¬æããããŒã«ã®åºçŸã«ããããããã¯èæ çãªãããžã§ã¯ããã䟿å©ãªããŒã«ã«å€ãããŸããã
StorybookãDoczãããã³ Styleguidist ã¯ãã¹ãŠåãããšãè¡ããŸããã€ãŸããã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã衚瀺ãããã® API ãææžåããŸãã ãããžã§ã¯ãã«ã¯æ°åãå Žåã«ãã£ãŠã¯æ°çŸã®ã³ã³ããŒãã³ããå«ãŸããå Žåãããããã¹ãŠç°ãªãç¶æ ãšã¹ã¿ã€ã«ãæã¡ãŸãã ã³ã³ããŒãã³ããåå©çšãããå Žåã¯ãã³ã³ããŒãã³ãã®ååšã人ã ã«ç¥ãããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãã³ã³ããŒãã³ããã«ã¿ãã°åããã ãã§ãã ã¬ã€ãã©ã€ã³ã¯ããã¹ãŠã®ã³ã³ããŒãã³ãã®æŠèŠãèŠã€ããããæäŸããŸãã ããã«ãããèŠèŠçãªäžè²«æ§ãç¶æãããå埩äœæ¥ãåé¿ãããŸãã
ãããã®ããŒã«ã¯ãããŸããŸãªç¶æ ã衚瀺ãã䟿å©ãªæ¹æ³ãæäŸããŸãã å®éã®ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãã§ã³ã³ããŒãã³ãã®åç¶æ ãåçŸããã®ã¯é£ããå ŽåããããŸãã å®éã®ã¢ããªã±ãŒã·ã§ã³ãã¯ãªãã¯ãã代ããã«ãå¥ã®ã³ã³ããŒãã³ããéçºãã䟡å€ããããŸãã å°éãå°é£ãªç¶æ (èªã¿èŸŒã¿ç¶æ ãªã©) ãã·ãã¥ã¬ãŒãã§ããŸãã
ããŸããŸãªç¶æ ã®èŠèŠçãªãã¢ã³ã¹ãã¬ãŒã·ã§ã³ãããããã£ã®ãªã¹ãã«å ããŠãå€ãã®å Žåãã³ã³ãã³ãã®äžè¬çãªèª¬æ (èšèšã®çè«çæ ¹æ ã䜿çšäŸããŠãŒã¶ãŒ ãã¹ãã®çµæã®èª¬æ) ãèšè¿°ããå¿ èŠããããŸãã Markdown ã¯éåžžã«ç°¡åã«åŠã¶ããšãã§ããŸããçæ³çã«ã¯ãã¬ã€ãã©ã€ã³ã¯ãã¶ã€ããŒãšéçºè ã®ããã®å ±æãªãœãŒã¹ã§ããã¹ãã§ãã DoczãStyleguidistãStorybook ã¯ãMarkdown ãšã³ã³ããŒãã³ããç°¡åã«çµã¿åãããæ¹æ³ãæäŸããŸãã
ãã¯ãº
çŸåšãDocz 㯠React ã§ã®ã¿åäœããŸãããPreactãVueãããã³ Web ã³ã³ããŒãã³ãããµããŒãããããã®ç©æ¥µçãªäœæ¥ãé²è¡äžã§ãã Docz 㯠14 ã€ã®ããŒã«ã®äžã§æãæ°ãããã®ã§ãããGithub äžã§ 000 ãè¶
ããã¹ã¿ãŒãéããããšãã§ããŸããã Doczã¯XNUMXã€ã®ã³ã³ããŒãã³ããå°å
¥ããŸã- <Playground>
О < Props >
ã ã€ã³ããŒããããŠãã¡ã€ã«å
ã§äœ¿çšãããŸã .mdx
.
import { Playground, Props } from "docz";
import Button from "../src/Button";
## You can _write_ **markdown**
### You can import and use components
<Button>click</Button>
ç¬èªã® React ã³ã³ããŒãã³ããã©ããããããšãã§ããŸãã <Playground>
çµã¿èŸŒã¿ã® CodePen ãŸã㯠CodeSandbox ã®é¡äŒŒç©ãäœæããŸããã€ãŸããã³ã³ããŒãã³ãã衚瀺ãããç·šéã§ããŸãã
<Playground>
<Button>click</Button>
</Playground>
<Props>
æå®ããã React ã³ã³ããŒãã³ãã§äœ¿çšå¯èœãªãã¹ãŠã®ããããã£ãããã©ã«ãå€ãããã³ããããã£ãå¿
é ãã©ããã衚瀺ãããŸãã
<Props of={Button} />
å人çã«ã¯ããã® MDX ããŒã¹ã®ã¢ãããŒããæãç解ãããããæãæ±ãããããšæããŸãã
Gatsby éçãµã€ã ãžã§ãã¬ãŒã¿ãŒã®ãã¡ã³ã§ããã°ãDocz ã¯åªããçµ±åãæäŸããŸãã
ã¹ã¿ã€ã«ã¬ã€ã
Docz ãšåæ§ã«ããµã³ãã«ã¯ Markdown æ§æã䜿çšããŠèšè¿°ãããŸãã Styleguidist ã¯éåžžã®ãã¡ã€ã«ã§ Markdown ã³ãŒã ããã㯠(äžéåŒçšç¬Š) ã䜿çšããŸãã .md
MDX ã§ã¯ãªããã¡ã€ã«ã§ãã
```js
<Button onClick={() => console.log('clicked')>Push Me</Button>
Markdown ã®ã³ãŒã ãããã¯ã¯éåžžãã³ãŒãã衚瀺ããã ãã§ãã Styleguidist ã䜿çšããå Žåãèšèªã¿ã°ãå«ãã³ãŒãã®ããã㯠js
, jsx
ãŸã㯠javascript
React ã³ã³ããŒãã³ããšããŠã¬ã³ããªã³ã°ãããŸãã Docz ãšåæ§ã«ãã³ãŒãã¯ç·šéå¯èœã§ããããããã£ãå€æŽããŠãçµæãå³åº§ã«ç¢ºèªã§ããŸãã
Styleguidist ã¯ãPropTypesãFlowããŸã㯠Typescript 宣èšãããããã㣠ããŒãã«ãèªåçã«äœæããŸãã
Styleguidist ã¯çŸåšãReact ãš Vue ããµããŒãããŠããŸãã
ã¹ããŒãªãŒããã¯
Storybook ã¯èªãããUI ã³ã³ããŒãã³ãéçºç°å¢ããšäœçœ®ä»ããŠããŸãã Markdown ãŸã㯠MDX ãã¡ã€ã«å ã«ãµã³ãã« ã³ã³ããŒãã³ããèšè¿°ãã代ããã«ã次ã®ããã«èšè¿°ããŸãã ç©èª Javascript ãã¡ã€ã«å ã ã¹ããŒãªãŒ ã³ã³ããŒãã³ãã®ç¹å®ã®ç¶æ ãææžåããŸãã ããšãã°ãã³ã³ããŒãã³ãã«ã¯ãããŒããããç¶æ ãšç¡å¹ãªç¶æ ã®å±¥æŽãå«ãŸããå ŽåããããŸã (ç¡å¹).
storiesOf('Button', module)
.add('disabled', () => (
<Button disabled>lorem ipsum</Button>
))
Storybook ã¯ãStyleguidist ã Docz ãããã¯ããã«è€éã§ãã ãããåæã«ãããã¯æã人æ°ã®ãããªãã·ã§ã³ã§ããããã®ãããžã§ã¯ãã«ã¯ Github 㧠36 ãè¶ ããã¹ã¿ãŒãä»ããŠããŸãã ããã¯ã000 人ã®è²¢ç®è ãšãã«ã¿ã€ã ã®ã¹ã¿ãããåå ãããªãŒãã³ãœãŒã¹ ãããžã§ã¯ãã§ãã AirbnbãAlgoliaãAtlassianãLyftãSalesforce ã«ãã£ãŠäœ¿çšãããŠããŸãã Storybook ã¯ã競åä»ç€Ÿãããå€ãã®ãã¬ãŒã ã¯ãŒã¯ (ReactãReact NativeãVueãAngularãMithrilãEmberãRiotãSvelteãéåžžã® HTML) ããµããŒãããŠããŸãã
å°æ¥ã®ãªãªãŒã¹ã§ã¯ãDocz ã®æ©èœãè¿œå ãããMDX ãå°å ¥ãããäºå®ã§ãã
# Button
Some _notes_ about your button written with **markdown syntax**.
<Story name="disabled">
<Button disabled>lorem ipsum</Button>
</Story>
Storybookã®æ°æ©èœã¯ä»åŸæ°ã«æãããŠæ®µéçã«å°å ¥ãããäºå®ã§ã倧ããªåé²ãšãªãããã ã
çµæ
ãã¿ãŒã³ ã©ã€ãã©ãªã®å©ç¹ã¯ãMedium äžã®äœçŸäžãã®èšäºã§ç§°è³ãããŠããŸãã ããŸãæ©èœãããšãé¢é£è£œåã®äœæãã¢ã€ãã³ãã£ãã£ã®ç¶æã容æã«ãªããŸãã ãã¡ããããããã®ããŒã«ã¯ã©ããéæ³ã®ããã«ãã¶ã€ã³ ã·ã¹ãã ãäœæãããã®ã§ã¯ãããŸããã ããã«ã¯æ éãªèšèšãš CSS ãå¿ èŠã§ãã ããããäŒç€Ÿå šäœããã¶ã€ã³ ã·ã¹ãã ã«ã¢ã¯ã»ã¹ã§ããããã«ããå Žåã«ã¯ãDoczãStorybookãStyleguidist ãåªããéžæè¢ãšãªããŸãã
翻蚳è ããã ãããç§ã«ãšã£ãŠããã¬ã§ã®åããŠã®çµéšã§ãã äžæ£ç¢ºãªç¹ãèŠã€ããå ŽåããŸãã¯èšäºãæ¹åããããã®ææ¡ãããå Žåã¯ãå人ã¡ãã»ãŒãžã§ç§ã«æžããŠãã ããã
åºæïŒ habr.com