Riot+sass@gulpスターターキット

riot.js用のボイラープレート的な何かです。gulpで一通りのビルドができるよう構成しています。

始め方

  1. $ npm install (初回のみ)
  2. $ npm run watch

→ブラウザが立ち上がってサンプルが表示されます。 終了する時はCtl-Cで。

下記のモジュールをグローバルインストールすることを推薦します。 (但し、ここに書いてある範囲の使い方であれば、恐らくは不要です)

  • babel-core@6.23.1
    • $ npm install -g babel-core
  • gulp@3.9.1
    • $ npm install -g gulp

開発の進め方

  • npm run watchしている状態でsrcディレクトリ内を編集します
  • 変更は自動でビルドされ、ブラウザに反映されます
  • ビルドされたものはdistディレクトリに出力されます
  • エラーでビルドに失敗するとデスクトップに通知が出ます
  • たまにブラウザの自動同期が動かなくなることがあるかも?
    • その場合はお手数ですがCtl-Cで一旦落としてnpm run watchを再実行してください

開発モデル

  • 大体の部分で下の記事に倣っています。多謝。
  • グローバルの汚染を防ぐため、タグ以外のアプリのロジックは全てwindow.Appに入れます
    • index.jsを参照してください。この中はES2015が書けるので、importが使えます
  • データの管理にはRiotControllを利用したゆるいFlux的なモデルを組み込んでいます
    • データの管理はデータストアクラスに隔離されています。タグからはアクセスできません
    • タグからデータを参照/更新するには、App.controllerに対してイベントを発行します
    • 詳細はサンプルのusers.tagを参照してください
  • SPAの画面遷移(ルーティング)には公式のriotルーターを利用しています
    • App.routerでアクセスできます
    • ルーティングの定義はrouter.jsを参照/編集してください

ビルド構成

  • riot.js
    • src/tag/の下の.tagをコンパイル・結合し、dist/js/tags.jsに出力します
    • ES2015で書けます
    • riotコパイラのsourcemap対応がダメっぽい(2017/2時点で対応中?)ので、妥協でコンパイル後・結合前のjsに対してソースマップを作ってます。ごめんなさい
  • その他のjs
    • src/js下の.jsをコンパイル・結合し、dist/js/main.jsに出力します
    • ES2015で書けます
    • ソースマップ作ります
  • sass
    • src/css/の下の.scssをコンパイル・結合し、dist/css/style.cssに出力します
    • 今のところ圧縮はしてません
    • ソースマップ作ります
    • ベンダプレフィックスつけたりもやってません。必要なら追加してください
  • html
    • 何もしません。単に/srcから/distにコピーします

FQA

  • jQuery使いたいんだけど
    • npm install --sava jquery とかで入れてください
    • タグから使いたい場合は、index.jsでriot.jsと同じ要領でwindow直下にエクスポートしてください
    • ↑の手順がめんどくさければ、index.htmlでCDNから引っ張ってくるのでもOKです
  • ブラウザ同期がいつのまにか死んでるんだけど
    • 私もわかりません。エラー出るようにしてるんだけど...
  • 画像を変えたのに反映されないんだけど
    • js,tag,html,sass以外は監視対象にしていません
    • Ctl-Cで止めて、もう一度npm run watchすれば反映されます
  • 画像以外のリソースファイルはどこに置けばいいの?
    • srcの下に自由にディレクトリ作ってください
    • そのままだとビルドに反映されないので、gulpfile.babel.jsを開いて、cpResourceタスクに定義を追加してください
  • ファイルが増えてきたらビルドが重いんだけど
    • watchifyとか入れてください(他人任せ)

ライセンス

MIT