質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

Q&A

2回答

2460閲覧

webpackを使うアプリでSCSSファイルを変換する際まだgulpを使うべきなのでしょうか?

workr

総合スコア158

Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

0グッド

0クリップ

投稿2018/06/05 10:31

Electron アプリケーションで SCSS を CSS に変換したものを使いたいと思っています。
とくに React 等を使うつもりはないので、いわゆる CSS in JS のような形にせず、単に CSS のまま使う予定です。

Electron のビルドに webpack を使うのでインストール済みなのですが、SCSS の変換を webpack でやるべきなのか gulp を使うほうがいいのか迷っています。

webpack で sass-loader, mini-css-extract-plugin などを使えば変換できることを確かめたのですが、現時点ではとくに意味がなさそうな JS ファイル(当環境では style.bundle.js という名称)が一緒に作られるので遠回りなようにも見えてしまいます。(原理がよくわかっていません)

以下は使用した webpack.config.js です。

Javascript

1const path = require('path') 2const MiniCssExtractPlugin = require("mini-css-extract-plugin"); 3 4module.exports = [{ 5 mode: 'development', 6 entry: { 7 style: './src/assets/sass/app.scss' 8 }, 9 devtool: "source-map", 10 output: { 11 path: path.join(__dirname, 'dist'), 12 filename: 'assets/js/[name].bundle.js' 13 }, 14 module: { 15 rules: [{ 16 test: /.css$/, 17 use: [ 18 MiniCssExtractPlugin.loader, 19 'css-loader', 20 ] 21 }, 22 { 23 test: /.scss$/, 24 use: [ 25 MiniCssExtractPlugin.loader, 26 { 27 loader: 'css-loader', 28 options: { 29 importLoaders: 1, 30 }, 31 }, 32 'sass-loader', 33 ] 34 } 35 ] 36 }, 37 plugins: [ 38 new MiniCssExtractPlugin({ 39 filename: "assets/css/[name].css" 40 }) 41 ] 42}];

タスクランナーとしての役目は gulp で行ってしまえば余計なファイルが作られる問題はなさそうですが、工夫すれば webpack だけでもやれそうな気がします。このあたりの話題に関しては知識不足なのでこのような処理を行う際どうするのが一般的なのか知りたいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

質問の趣旨を勘違いしていました。
このfilenameの部分を修正すれば、style.bundle.jsは作られなくなると思います。

output: { path: path.join(__dirname, 'dist'), filename: 'assets/js/[name].bundle.js' },

投稿2018/06/05 10:58

sagami1991

総合スコア216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

workr

2018/06/06 03:39

回答ありがとうございます。filename を plugins で指定されているものと同じにすると上書きされて消えたように見えるという情報をもとに試してみたのですが「Conflict: Multiple assets emit to the same filename」となってしまって無理のようでした。 (参考: https://stackoverflow.com/questions/29760894/with-webpack-is-it-possible-to-generate-css-only-excluding-the-output-js) webpack は 4.x を使用しているのでそのあたりが影響しているのかもしれませんが、具体的にはどのように変更したらいいのでしょうか?
guest

0

私はいつもこの方法でwebpackでSCSSをCSSに変換してます。
module.exportsにjavascript用とcss用を二つ配列で定義してます。
ただ、webpackのバージョンを4系に上げたら動かなくなってしまったので、3系限定の記述になります。
あと、source-mapの行がずれていたり等の挙動もあったりしました。。

javascript

1// @ts-check 2const path = require("path"); 3const ExtractTextPlugin = require("extract-text-webpack-plugin"); 4const CopyWebpackPlugin = require("copy-webpack-plugin"); 5const webpack = require("webpack"); 6 7module.exports = [ 8 // typescript -> javascript build 9 { 10 entry: { 11 "app": "./src/typescript/app.ts", 12 }, 13 output: { 14 path: path.join(__dirname, "docs"), 15 filename: "[name].js", 16 }, 17 devtool: "source-map", 18 resolve: { 19 modules: [ 20 path.resolve("./src/typescript"), 21 path.resolve("./node_modules") 22 ], 23 extensions: [".js", ".ts"], 24 }, 25 module: { 26 rules: [{ 27 test: /.ts?$/, 28 use: { 29 loader: "ts-loader", 30 options: { 31 compilerOptions: { 32 "noUnusedLocals": false, 33 "noUnusedParameters": false, 34 } 35 } 36 } 37 }] 38 }, 39 target: "web" 40 41 }, 42 // sass -> css build 43 { 44 context: path.join(__dirname, "src/scss"), 45 entry: { 46 style: "./main.scss" 47 }, 48 output: { 49 path: path.join(__dirname, "docs"), 50 filename: "style.css" 51 }, 52 module: { 53 rules: [{ 54 test: /.scss$/, 55 use: ExtractTextPlugin.extract({ 56 use: [{ 57 loader: "css-loader", 58 options: { 59 minimize: true, 60 sourceMap: true 61 } 62 }, { 63 loader: "sass-loader", 64 options: { 65 sourceMap: true 66 } 67 }] 68 }) 69 }] 70 }, 71 devtool: "source-map", 72 plugins: [ 73 new ExtractTextPlugin({ 74 filename: "style.css" 75 }) 76 ] 77 } 78];

投稿2018/06/05 10:53

sagami1991

総合スコア216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問