Electron Advent Calendar 25日目が空いていたので今思いついた適当な記事で埋めてみる。
Electronではbabel-register
を使えばwebpackとかを使わないで変換できるし、そもそもChromiumの新しいバージョンで動くのでBabelもいらないケースもある。async/awaitも55には乗るしね(今はまだ53)。
CSSも同じように、CSS Variablesは使えるし、コンポーネントごとにCSSを分割していけばセレクタのネストもなくてもほとんど問題ないのでSassもpostcssもいらない。そうすると./node_modules/.bin/electron
だけで開発環境が起動できてハッピーだ。
ただ、コンポーネントごとにCSSを分けるとめんどうなのがいちいちmain.css
とかに@import
を買いてCSSを読み込まないといけない点。せめてwebpackのstyle-loaderみたいにJSの中でimport './Foo.css'
みたいにできればコンポーネント内で解決できるので嬉しい。
そこでNode.jsのrequire.extensions
でこんな感じにしてみるとどうかと思った。
require.extensions['.css'] = function(m, filename) {
let link = document.createElement('link');
link.setAttribute('rel', 'stylesheet');
link.setAttribute('href', filename);
document.head.appendChild(link);
};
これで
require('./Foo.css');
みたいにするとhead
内にlink
要素がappendされてCSSが読み込まれる。リリース時にbundleしたいときはwebpackのcss-loaderとstyle-loaderを使えばたぶん動く(未確認)。
実際にこれで読み込まれるのは確認したけど実際のプロジェクトでは試してないので何か問題はあるかも。どうだろうか。