webpack5 をほぼチュートリアル通りに進める その2(sassのビルド)

Asset Management - webpack をすすめる。

下記記事参考
webpackとBabelの基本を理解する(5) ―Sass編― - qiita

sass ファイルをビルドする

ファイル構成

app/
  ├ main.js
  └ sass/
      ├ style.scss
      └ scss ファイルなど色々 
package.json
public/
  ├ index.html
  └ css/
webpack.config.js

インストール

$ npm install sass-loader node-sass css-loader style-loader --save-dev

app/main.js

import style from './sass/style.scss'

webpack.config.js

const path = require('path')

module.exports = {
	entry: './app/main.js',
	output: {
		path: path.resolve(__dirname, 'public'),
		filename: 'js/script.js',
	},
	module: {
		rules: [
			{
				test: /\.scss$/i,
				exclude: /node_modules/,
				use: [
					'style-loader',
					{
						loader: 'css-loader',
						options: { url: false },
					},
					'sass-loader',
				],
			},
		],
	},
}

sass をビルドする時に css ファイルとして出力する

インストール

$ npm install mini-css-extract-plugin --save-dev

アンインストール

使わないパッケージが存在していることを気にする人はアンインストール。

$ npm uninstall style-loader --save-dev

app/main.js

import style from './sass/style.scss'

webpack.config.js

  • public/css に style.css として出力する。
const path = require('path')
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
	entry: './app/main.js',
	output: {
		path: path.resolve(__dirname, 'public'),
		filename: 'js/script.js',
	},
	module: {
		rules: [
			{
				test: /\.scss$/i,
				exclude: /node_modules/,
				use: [
					MiniCssExtractPlugin.loader,
					{
						loader: 'css-loader',
						options: {
							url: false,
						},
					},
					{
						loader: 'sass-loader',
						options: {},
					},
				],
			},
		],
	},
	plugins: [
		new MiniCssExtractPlugin({
			filename: 'css/style.css',
		}),
	],
}

Autoprefixer について

pastcss-loader のプラグインに autoprefixer がある。
インストールしなくてもベンダープレフィックスをある程度つけてくれるので割愛。

Minify について

ビルドする時にモードを production に指定した場合に自動的に minify される。

$ webpack --mode=production

モードが development の場合は minify されずにビルドされる。

$ webpack --mode=development

関連投稿