仕組み
このページでは、MDMTがどうやって動いてるかを説明します。
カスタマイズする時の参考にどうぞ。
ディレクトリ構造
MDMTは以下のファイル/ディレクトリからなっています。
pages/: ページに対応するMarkdown置き場components/: Reactコンポーネントstatic/: 画像等の静的ファイルlib/: MDMTの本体scripts/: ビルド時に使用するスクリプト置き場docs/: 出力ディレクトリconfig.js: 設定ファイル
記事を作成/編集するときは pages/、 デザインを変更するときは components/、データフローをいじりたい時は lib/ を見ると良いです。
データフロー
アプリ全体の状態管理には、React Hooksを利用してReduxライクなシステムを作って利用しています。
状態とアクションは lib/store.ts, 状態の受け渡しは lib/context.ts をご覧ください。
ビルドの流れ
package.jsonを見ると、ビルドスクリプトは以下のようになっています。
"build": "NODE_ENV=production run-s clean build:manifest build:build build:export build:nojekyll build:preload build:sw",
なんか複雑に見えるけど、実際は以下の処理を順番にやってるだけです。
- clean: 古い出力ファイルを削除
- build:manifest: config.jsからmanifest.jsonを生成
- build:build, build:export:
docs/に静的ファイルを生成 - build:nojekyll: GitHub Pages対応
- build:preload: GitHub Pages対応
- build:sw: ServiceWorkerファイル作成
preload辺りはそのうち要らなくなるかも。
なんか提案あったら気軽におしえてください〜