くりふぃの日記

プログラミングとかのメモ書きとかに使えたらいいなぁ。

Phoenixの--no-brunchで消えるもの

経緯

brunch以外のビルドツールを使いたいときにPhoenixとの連携に何が必要なのかが知りたかった。

brunchなしのプロジェクト

Phoenixを--no-brunchオプション付きでプロジェクト作成するとbrunchが取り除かれたプロジェクトが作成される。

APIサーバプログラムを作るときとかは特にビルドツールはいらないと思うので--no-brunchを使えばいい。

ただ、brunch以外のビルドツールを使いたいときに--no-brunchしてしまうとビルドツール導入時にPhoenixとの連携に必要な設定もすべて自分で行う必要がある。

普通にプロジェクトを作成して必要な部分を置き換えていくという形でもよいが、どのみちPhoenixがbrunchと連携している箇所を知る必要がある。

なので、--no-brunchに対して通常作成したときのプロジェクトの差分を見て連携に必要な設定をすべて暴こうと考えた。

あとで分かるがどちらにしてもコストはあまり変わらないのだが……。

diffの結果

.gitignore

これは単純にbrunchで必要とするファイルのうちgit管理下から取り除くための記述があるかないかだけ。わざわざ書くまでもない。

README.md

以下の記述が増える。brunchの導入に必要なこと。

  * Install Node.js dependencies with `npm install`

config/dev.exs

watcherの設定が増えている。開発環境でビルド対象の変更をwatchして再ビルドを行うための記述だろう。brunch以外のビルドツールを使用する場合にそのビルドツールに対応するwatch方法を定義してあげればよさそうだ。

-  watchers: []
+  watchers: [node: ["node_modules/brunch/bin/brunch", "watch", "--stdin",
+                    cd: Path.expand("../", __DIR__)]]

package.json

brunchの導入に必要となる。npmの設定である。

priv/static

このディレクトリは逆に消えている。brunchでビルドしないので最初に必要なJavaScriptCSSなどが含まれていると思われる。brunchありの場合はbrunch側で作成される。

web/static

vendor以外のディレクトリがなくなっている。このディレクトリにあるファイルがbrunchでビルドされている。

まとめ

大した差分はない。実質wachersの記述しかPhoenixとの連携で必要になる要素はない模様。

前にPhoenixにWebpack乗せたときはかなり調べたのだけれどもこれを見る限りでは--no-brunchでプロジェクトを作成してpackage.jsonで必要なライブラリをインストールしてしまえばwatcherの設定するだけで問題がなさそう。

正直、前に導入したときの苦労とはいったいという感じなので、きちんとビルドツールの取扱を理解してから望むべきだったなと実感。