electronアプリを、react、reduxを使って作ってみようと考えて調べていると、webpackを使った例を結構な頻度で目撃しました。 このwebpackを使って、sassをwebpackでコンパイルして、electronアプリに食わせるとこまでやってみました。
electronにしてもそうじゃないにしても、sassをコンパイルしてHTMLファイルに引き込む、というのがゴールになると思う。 webpackでCSSをバンドルする場合、通常JSとして扱うことになる(tutorials/getting-started)ようだが、ここでは、sassをコンパイルしてcssファイルとして出力する方法を試した。
次のパッケージをnpm
でインストールした。
electronアプリを作るために、
webpackを使うために、
webpackでcss、sassを扱うために、
本来は、electronのアプリを作るためのJavascriptソースをどういうディレクトリ構成で配置するか、まで考えたいけど、そこまで整理できないので、あくまでsassのことだけ考えて次のような構成にしてみた。
.
├── build
│ └── css
├── index.html
├── index.js
├── node_modules
├── package.json
└── src
└── sass
└── main.scss
次に、webpack.config.jsを作ってみる。
src/sass/main.scss
をコンパイルして、build/css/style.css
に出力する、という内容としてみた。
const path = require('path')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
module.exports = [
{
entry: {
style: './src/sass/main.scss'
},
output: {
path: path.join(__dirname, 'build/css'),
filename: '[name].css'
},
module: {
loaders: [
{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader")
},
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader!sass-loader")
}
]
},
plugins: [
new ExtractTextPlugin("[name].css")
]
}
];
webpackコマンドでコンパイルすると、確かにbuild/css/style.css
として出来上がっている。
% ./node_modules/webpack/bin/webpack.js
% ls build/css
style.css
このbuild/css/style.css
をindex.htmlに引き込めばよい。
正直electronはどうでもいいっていう内容になってしまいました・・・
モダンなフロントエンド開発は込み入っていますね・・・