かぷかぷ笑う

非IT系エンジニアの趣味エンジニアリング

create-react-appで簡単にcss moduleが使えるようになってた。

前略

ディープラーニングおたくを極めるため、G検定を勉強中だが、まあ飽きる。 Reactの勉強として、UdemyのReact 16 - The Complete Guide を受講中で、今日はcss moduleについてつらつらやった。 (ちなみに、今はBlack Friday Saleで安い、Udemyの素晴らしさはいつか書きたい)。

講座内ではcreate-react-appをejectして直接webpackのconfigファイルを変更して、css moduleを導入してたが、version2以降だとそんなことしなくてもいい。

結論から言うと、 「hoge.css」を「hoge.module.css」にして、普通にインポートするだけでcss moduleを使える。

css moduleを使う

css moduleによって、cssをモジュールっぽく使うことができる。しかも、cssのクラス名などはユニークな名前にコンパイルされるため、開発者はcssのスコープに悩まされなくて済むようになる。

create-react-appのversion2以降は「hoge.module.css」というように、.module.cssを加える。

例えば、

.App {
  color: red;
  text-align: center;
}

と書いたhoge.module.cssファイルを用意したら、javascript(react)側で、

import React from 'react';
import classes from './hoge.module.css'

const hoge = () => {
  return <p className={classes.App}>Hello, World</p>
}
export default App;

とすることで、classNameにモジュール感覚でcssを適用することができる。

まとめ

create-react-appをejectしてwebpack.config.dev.jsなどの設定ファイルを直接書き換えるか、新たにモジュールをインストールするなど、前準備が必要であった。

今は.module.cssを加えるだけでよい。

この界隈は更新が早いが、使いやすくなっていっているようでうれしい。

今後

Faster R-CNNの自前実装をやっていて、講座形式にしてまとめたいが、時間がかかる。 こんな感じの小ネタでごまかす。

参考

create-react-app with CSS Modules - RWieruch