Du kan ha det bÀsta projektet med öppen kÀllkod, men om det inte finns bra dokumentation finns det en risk att det aldrig fÄr fart. God dokumentation pÄ kontoret gör att du slipper svara pÄ samma frÄgor om och om igen. Dokumentationen sÀkerstÀller ocksÄ att mÀnniskor kan förstÄ projektet om nyckelpersoner lÀmnar företaget eller roller Àndras. Levande riktlinjer hjÀlper till att sÀkerstÀlla dataintegritet.
Om du behöver skriva en lÄng text Àr Markdown ett utmÀrkt alternativ till HTML. Ibland rÀcker inte Markdown-syntaxen till. I sÄ fall kan vi anvÀnda HTML inuti den. Till exempel anpassade element. Om du bygger ett designsystem med inbyggda webbkomponenter Àr det enkelt att inkludera dem i dokumenttexten. Om du anvÀnder React (eller nÄgot annat JSX-ramverk, som Preact eller Vue), kan du göra samma sak med MDX.
Denna artikel Àr en översikt över verktyg för att skriva dokumentation och skapa riktlinjer. Inte alla verktyg som nÀmns hÀr anvÀnder MDX, men det blir alltmer vanligt i dokumentationsverktyg.
Vad Àr MDX?
Fil .mdx har samma syntax som Markdown, men tillÄter import av interaktiva JSX-komponenter och att de bÀddas in i ditt innehÄll. Stöd för Vue-komponenter Àr fortfarande i alfa. För att börja anvÀnda MDX rÀcker det att installera 'Create React App'. Det finns plugins för Next.js och Gatsby. NÀsta version av Docusaurus (version 2) kommer ocksÄ ha inbyggt stöd.
Skriva dokumentation med Docusaurus
Docusaurus skapades av Facebook. De anvÀnder det i varje projekt med öppen kÀllkod, utom för React. Utanför företaget anvÀnds det av Redux, Prettier, Gulp och Babel.
Projekt som anvÀnder Docusaurus.
Docusaurus kan anvÀndas för att skriva nÄgon dokumentation, inte bara för att beskriva frontend. Den bygger pÄ React, men för att anvÀnda den behöver du inte vara bekant med den. Den tar dina Markdown-filer, en gnutta magi och sÄ Àr vÀlstrukturerad, formaterad och lÀsbar dokumentation med vacker design klar.

PÄ Redux-webbplatsen kan du se den standardmall som Docusaurus anvÀnder.
Webbplatser som skapats med Docusaurus kan Àven inkludera en blogg baserad pÄ Markdown. För syntaxmarkering Àr Prism.js direkt integrerat. Trots att Docusaurus Àr relativt nytt har det erkÀnds som det bÀsta verktyget 2018 pÄ StackShare.
Andra alternativ för att skapa innehÄll
Docusaurus Ă€r speciellt utformat för att skapa dokumentation. SjĂ€lvklart finns det miljoner sĂ€tt att skapa en webbplats â du kan driftsĂ€tta din egen lösning i valfritt sprĂ„k, CMS eller anvĂ€nda en statisk webbplatsgenerator.
Till exempel anvĂ€nder dokumentationen för React, design systemet IBM, Apollo och Ghost CMS Gatsby â en statisk webbplatsgenerator som ofta anvĂ€nds för bloggar. Om du arbetar med Vue kan VuePress vara ett bra alternativ för dig. Ett annat alternativ Ă€r att anvĂ€nda en generator skriven i Python â MkDocs. Den Ă€r öppen och konfigureras med en enda YAML-fil. GitBook Ă€r ocksĂ„ ett bra alternativ, men det Ă€r gratis endast för öppna och ideella team. Du kan Ă€ven helt enkelt ladda upp Markdown-filer med hjĂ€lp av git och arbeta med dem i GitHub.
Dokumentera komponenter: Docz, Storybook och Styleguidist
Riktlinjer, designsystem, komponentbibliotek â vad du Ă€n kallar dem, sĂ„ har de blivit mycket populĂ€ra pĂ„ sistone. FramvĂ€xten av komponentramverk som React och verktygen som nĂ€mns hĂ€r har möjliggjort att de kan omvandlas frĂ„n fĂ„fĂ€nga projekt till anvĂ€ndbara verktyg.
Storybook, Docz och Styleguidist gör i princip samma sak: de visar interaktivaelement och dokumenterar deras API. Ett projekt kan ha tiotals eller till och med hundratals komponenter â alla med olika tillstĂ„nd och stilar. Om du vill att komponenterna ska Ă„teranvĂ€ndas, mĂ„ste mĂ€nniskor veta att de finns. För det rĂ€cker det med att katalogisera komponenterna. Riktlinjer ger en lĂ€ttillgĂ€nglig översikt över alla dina komponenter. Detta hjĂ€lper till att upprĂ€tthĂ„lla visuell konsekvens och undvika duplicerat arbete.
Dessa verktyg erbjuder ett bekvÀmt sÀtt att visa olika tillstÄnd. Det kan vara svÄrt att Äterskapa varje komponenttillstÄnd i kontexten av en verklig applikation. IstÀllet för att klicka kring i en verklig applikation Àr det bÀttre att utveckla en separat komponent. Du kan modellera svÄrÄtkomliga tillstÄnd (t.ex. laddningstillstÄnd).
I takt med den visuella visningen av olika tillstĂ„nd och en lista över egenskaper Ă€r det ofta nödvĂ€ndigt att skriva en allmĂ€n beskrivning av innehĂ„llet â designmotiveringar, anvĂ€ndningsfall eller beskrivningar av resultat frĂ„n anvĂ€ndartester. Markdown Ă€r mycket enkelt att lĂ€ra sig â idealiskt sett bör riktlinjer vara en gemensam resurs för designers och utvecklare. Docz, Styleguidist och Storybook erbjuder ett sĂ€tt att enkelt blanda Markdown med komponenter.
Docz
Just nu fungerar Docz endast med React, men arbete pĂ„gĂ„r aktivt för att stödja Preact, Vue och webbkomponenter. Docz Ă€r det senaste av de tre verktygen, men har samlat mer Ă€n 14 000 stjĂ€rnor pĂ„ Github. Docz presenterar tvĂ„ komponenter â <Playground> och < Props >. De importeras och anvĂ€nds i filer .mdx.
import { Playground, Props } from "docz";
import Button from "..\/src\/Button";
## Du kan _skriva_ **markdown**
### Du kan importera och anvÀnda komponenter
Du kan svepa dina egna React-komponenter med hjĂ€lp av <Playground>, för att skapa en analog av inbyggda CodePen eller CodeSandbox â det vill sĂ€ga att du ser din komponent och kan redigera den.
<Props> visar alla tillgÀngliga egenskaper för denna React-komponent, standardvÀrden och om egenskapen Àr nödvÀndig.
<Props of={Button} />Personligen anser jag att detta MDX-baserade tillvÀgagÄngssÀtt Àr det lÀttaste att förstÄ och det enklaste att arbeta med.

Om du Àr ett fan av den statiska webbplatsgeneratorn Gatsby, erbjuder Docz utmÀrkt integration.
Styleguidist
Precis som i Docz skrivs exempel med Markdown-syntax. Styleguidist anvÀnder Markdown-kodblock (tre citattecken) i vanliga filer .md och inte i MDX.
```js
Kodblock i Markdown visar vanligtvis bara koden. NĂ€r du anvĂ€nder Styleguidist kommer vilket kodblock som helst med sprĂ„kets tagg js, jsx eller javascript att visas som en React-komponent. Precis som i Docz Ă€r koden redigerbar â du kan Ă€ndra egenskaper och se resultatet omedelbart.

Styleguidist kommer automatiskt att skapa en egenskapstabell frÄn PropTypes, Flow eller Typescript-deklarationer.

Styleguidist stödjer nu React och Vue.
Storybook
Storybook positionerar sig som "utvecklingsmiljö för UI-komponenter". IstÀllet för att skriva exempel pÄ komponenter inuti Markdown- eller MDX-filer skriver du historien inne i Javascript-filer. Historien dokumentera ett specifikt tillstÄnd av komponenten. Till exempel kan en komponent ha historik för laddningstillstÄnd och avstÀngd tillstÄnd (inaktiverad).
storiesOf('Button', module)
.add('inaktiverad', () => (
<Button inaktiverad>lorem ipsum<\/Button>
))Storybook Ă€r mycket mer komplex Ă€n Styleguidist och Docz. Men det Ă€r samtidigt det mest populĂ€ra alternativet, med över 36 000 stjĂ€rnor pĂ„ Github. Det Ă€r ett projekt med öppen kĂ€llkod, som har 657 bidragsgivare och stöds av anstĂ€llda. AnvĂ€nds av Airbnb, Algolia, Atlassian, Lyft och Salesforce. Storybook stöder fler ramverk Ă€n sina konkurrenter â React, React Native, Vue, Angular, Mithril, Ember, Riot, Svelte och vanlig HTML.
I framtida releaser kommer funktioner frÄn Docz att inkluderas och MDX kommer att implementeras.
# Button
Some _notes_ about your button written with **markdown syntax**.
<Story name="disabled">
<Button disabled>lorem ipsum</Button>
</Story>Nya funktioner för Storybook kommer att introduceras gradvis under de kommande mÄnaderna och det verkar som om detta kommer att bli ett stort framsteg.
Sammanfattning
Fördelarna med mönsterbibliotek hyllas i miljontals artiklar pÄ Medium. NÀr allt görs rÀtt underlÀttar de skapandet av relaterade produkter och upprÀtthÄllandet av enhetlighet. Selvklart, inget av dessa verktyg kan magiskt skapa en designsystem. Det krÀver noggrant utformande av design och CSS. Men nÀr det Àr dags att göra designsystemet tillgÀngligt för hela företaget, Àr Docz, Storybook och Styleguidist utmÀrkta alternativ.
FrĂ„n översĂ€ttaren. Detta Ă€r min första erfarenhet pĂ„ HabrĂ©. Om du har hittat nĂ„gra brister eller har förslag pĂ„ förbĂ€ttringar av artikeln â skicka mig ett meddelande.
KĂ€lla: habr.com
