使用 React Styleguidist 編寫文檔

文檔到處寫好麻煩

文檔管理是個比較繁瑣的事情,如果文檔和代碼是分離的,代碼更新了還要到對應的文檔的地方做更改,很難讓人持之以恒。

有沒有一個方式是只需要在代碼的地方寫好注釋,然后自動生成可交互的文檔呢?

React Styleguidist 可以做到,但是配置比較繁瑣,而且也沒有中文支持,對中文用戶來說很難。

開始吧

  1. 安裝依賴

這里使用了 webpack-blocks, 畢竟不是每個項目都會有 webpack 配置

# 最好裝一個 npx
npm i npx -g

# 然后安裝
yarn add webpack react-styleguidist webpack-blocks --dev
  1. 在項目根目錄創(chuàng)建 styleguide.config.js
const { createConfig, babel, postcss } = require('webpack-blocks')
module.exports = {
  webpackConfig: createConfig([babel(), postcss()]),
  components: 'src/core/**/**.js' // 寫入對應目錄的文檔
}
  1. 啟動文檔開發(fā)模式
npx styleguidist server

# 這里是 build
npx styleguidist build

就好了,React Styleguidist 很強,會自動找所有的 src//.js 的注釋,對應的文件,然后生成一份文檔。

自定義樣式

官方推薦在 styleguide.config.js 中寫 style,并且用 React devtool 查找對應的節(jié)點,覆蓋原有樣式。

我覺得這樣的設計糟糕透了

  • 寫到配置文件中不能實時查看樣式,需要重啟服務才可以看到修改結果,簡直智障
  • 很費勁去尋找那個樣式 react 的組件

那其實可以換一個想法,新增一個 scss 文件,使用 css 選擇器 + !important 方式去覆蓋,在 styleguide.config.js 中配置 require 參數(shù)。

module.exports = {
  ...yourConfig,
  // styleguide/style.scss 自行創(chuàng)建
  require: path.join(__dirname, 'styleguide/style.scss'),
}
# 例如修改 sidebar 的背景顏色

[class^=rsg--sidebar] {
  background-color: #fefefe !important;
}

自定義入口 index.html 入口模版

這又是另一個智障的設計,不支持通過文件模版的方式引用,只能使用 styleguide.config.js 中的 template 字段來自定義模版,而且寫法太難受了,我只想加入 loading 畫面以及飲用 icon 或者其它三方庫,需要如下寫法

module.exports = {
  ...yourConfig,
  template: ({}) => `<!DOCTYPE html>
      <html>
        <head>
          <meta charset="UTF-8">
          <title>${title}</title>
          ${generateCSSReferences(css, publicPath)}
          <link rel="stylesheet" href="./resource/loading.css">
        </head>
        <body>
          <div id="rsg-root"></div>
            <div class="sk-folding-cube" id="loadingBg">
            <div class="sk-cube1 sk-cube"></div>
            <div class="sk-cube2 sk-cube"></div>
            <div class="sk-cube4 sk-cube"></div>
            <div class="sk-cube3 sk-cube"></div>
          </div>
          ${generateJSReferences(js, publicPath)}
        </body>
      </html>
      <link rel="stylesheet"  integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
    `
}

總結

同類型的 style guide 也有不少,不過 react styleguidist 相對完善一些

Ukelli-UI 便是基于此方式來編寫文檔,雖然有些傻,但是還能接受,用 markdown 的方式來寫例子,更好維護和查看了

Ukelli-UI 的 style guide 配置

參考

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1 Webpack 1.1 概念簡介 1.1.1 WebPack是什么 1、一個打包工具 2、一個模塊加載工具 3...
    Kevin_Junbaozi閱讀 7,022評論 0 16
  • GitChat技術雜談 前言 本文較長,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,891評論 7 110
  • 一、webpack的基本概念 webpack 本質上是一個打包工具,它會根據(jù)代碼的內(nèi)容解析模塊依賴,幫助我們把多個...
    cilla123閱讀 1,721評論 0 8
  • 寫在前面的話 閱讀本文之前,先看下面這個webpack的配置文件,如果每一項你都懂,那本文能帶給你的收獲也許就比較...
    不忘初心_9a16閱讀 3,335評論 0 16
  • 今天學的I2C相關知識,I2C串行總線有兩根信號線,一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL。各設備的時鐘線SCL...
    李藝瑩閱讀 189評論 0 0

友情鏈接更多精彩內(nèi)容