LoginSignup
11
13

More than 5 years have passed since last update.

Elixir+Phoenix+Brunch環境でReact.jsを使う

Posted at

はじめに

ググると上の方に出てくる Phoenix Framework (Elixir)で React.jsを動かしてみる - Misoca開発ブログ には

Phoenixでは、brunchを使って、静的なアセットをビルドしています。brunchでは、JavaScriptライブラリなどをbowerを使って管理します。

とあるが、bowerは使いたくない。

brunch/react-brunch - JavaScriptを使えばいいのかなと思ったら、

DEPRECATED: Please use babel-brunch instead.

とある。babel-brunchは最初から入ってる。どうもreact-brunchはjsxのコンパイルしてくれるだけで、babelにその機能入ってるらしい。
※ 参考:JavaScript - Babel に JSX は要らない - Qiita

色々調べた結果、npmでインストールして、それを使うように設定したらできた。

手順

インストール

npm install --save react react-dom babel-preset-es2015 babel-preset-react

React v0.14でCoreモジュールとDOM関連のものが分離されたらしい。今回はWebアプリをつくるのでreact-domもインストールした。
※ 参考:React.js v0.14 changes - blog.koba04.com

ホワイトリスト追加

brnch-config.js
  npm: {
    enabled: true,
    // Whitelist the npm deps to be pulled in as front-end assets.
    // All other deps in package.json will be excluded from the bundle.
    // JSからimportするものはwhitelistに追加する??
    whitelist: ["phoenix", "phoenix_html", "react", "react-dom"]
  }

これがないと、import React from "react" でエラーになった。

presets追加

brunch-config.js
plugins: {
    babel: {
      presets: ["es2015", "react"], //es2015はbrunchのdefaultだけど、わかりづらいので明示的に指定しておく
      // Do not use ES6 compiler in vendor code
      ignore: [/web\/static\/vendor/]
    }
  },

babel6からは自分でどの言語を使うのか指定しないといけないらしい。
babel6での変更点 Gulp・Webpackの設定 - Qiita

brunchはdefaultでes2015を使ってくれるらしいけど、reactだけを指定したらエラーがでたので両方指定してる。

サーバー再起動

mix phoenix.server

おわりに

ホワイトリストとかはいまいちまだよくわかってない。。。
JS界隈、いつのまにかけっこう変わってたり、ライブラリ/フレームワークが多すぎてつらい。

参考

Phoenix v1.1.2 and React.js — Medium

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13