簡単なCMSを作るにあたり、ビルド&テストを行う環境構築を行っている。一応以下のものを使って作りはじめている。
UIのコンポーネント作りはriot.jsで
ここはメジャーなReactでと言いたいところだが、なぜか昔からriot.jsに惹かれており、これでUIパーツを作ろうと思っている。riot.jsは設計がHTMLとJSの範疇からあまり飛び出してなく自然な感じがよいと思っている。これとEJS・bulmaを使って画面を作っていく。
UIのレイアウト・デザインはbulmaで
Bootstrapと言いたいところだが、bootstrapはjqueryが必要だしfatなライブラリなので避けることにした。bulmaは軽くてデザインも好みなので当面はこれでやろうと思っている。ひょっとしたらいちから作り直すかもしれないが。CSSグリッドも使ってみたいと思ってるので。。
CSSはpostcssでビルドする
bulma.cssをベース・ラインとして、追加のCSSはpostcssでビルドしようと思う。postcssにはpurgecssのプラグインがあるので、bulmaで使用しないセレクタをカットして容量を節約しようと思っている。purgecssを使えばfatなbootstrapもスリム化できるかなと思ったけど、jqueryは消せないのでやっぱりbulmaで行くことにする。
HTMLテンプレート・エンジンはEJSで
riot.jsにはSSRの機能もあるのでEJSいらんかな?と思ったけどベースのHTMLは作る必要があるし、EJSだとファイル分割してヘッダ部分を共通化できたりするので使うことにした。
コンテンツの配信はkoa.jsで
expressはなんとなく終了感が強く、koa.jsのほうがまだ活発な気がするし、async/awaitへの対応具合がいい感じなので。
バンドルはrollupで
WebPackと言いたいところだが、これも2番手という感じのrollupでバンドルしようかなと思っている。シンプルな感じなのが好みなのだ。
ビルドシステムはmakeで
上で使うシステムのバンドルやビルドはできるだけCLIで行って、ファイルの変更検知とビルドはmakeでベタに行うつもりである。
その他
少し前まで思い悩んでいたのはサーバー・サイドでのレンダリングである。riot.jsのSSR機能とEJSとの棲み分けというかバランスというか。どこまでを静的コンテンツにし、どこまでをSSRにし、どこまでをクライアント・サイドでやるか。。これはコードを書いてみればわかるような気がするので、あまり考えないことにして進めることにした。