create-react-app で eject せずに babel-plugin-react-css-modules をあてる
2020-07-15
素の create-react-app
で eject
を行わずに webpack
の設定を上書きすることは厳しいみたいです。
そこで、外部パッケージで react-scripts
をラップしてやることで、webpack
の設定を上書きできるようになります。
メジャーどことしては以下の 3 つが上がるみたいです。
ダウンロード順としてはこんな感じみたいです。
react-app-rewired
が頭一つ抜けているイメージでしたが、思ったほど差がないんだなーと。
今回は趣味の開発(レシグル)ということもあり、なんとなく @craco/craco
を選んでみました。
まず package.json
の scripts を以下の通り書き換えます。
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
}
次に、プロジェクトのルートディレクトリにcraco.config.js
を作り、中身を以下のようにしてやると動きます。
module.exports = {
style: {
modules: {
localIdentName: "[path]___[name]__[local]___[hash:base64:5]",
},
},
babel: {
plugins: [
[
// "react-css-modules" と書いても OK
"babel-plugin-react-css-modules",
{
filetypes: {
".scss": {
syntax: "postcss-scss",
},
},
},
],
],
},
};
react-app-rewired
や customize-cra
だと少し設定が変わりそうですが、とはいえ大差ないと思います。