仕組み
このページでは、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辺りはそのうち要らなくなるかも。
なんか提案あったら気軽におしえてください〜