Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

Группировка (оптимизация) классов и стилей CSS на выходе из WebPack 4?

Приветствую!

Собираю проект через webpack 4 и на выходе получаю "полу-оптимизированный" css.

Выдержка из webpack.config.js
{
	test: /\.((s[ac]|c)ss)$/,
	use: [
		PLUGINS.mini_css_extract_plugin.loader,
		{
			loader: 'css-loader',
			options: {
				sourceMap: !isProduction
			}
		},

		{
			loader: 'postcss-loader',
			options: {
				ident: 'postcss',
				sourceMap: !isProduction,
				plugins: (() => {
					return isProduction ? [
						require('autoprefixer')({
							browsers: ['last 2 versions']
						}),
						require('cssnano')({
							preset: 'default'
						}),
						require("css-mqpacker")
					] : []
				})()
			}
		},

		{
			loader: 'sass-loader',
			options: {
				outputStyle: 'expanded',
				sourceMap: !isProduction
			}
		},
	]
},



1. Перед сборкой проекта имею следующий scss код:
.class_1 {
	width: 1px;
}

.class_2 {
	width: 1px;
}

.class_3 {
	width: 2px;
}


2. После сборки на выходе имею следующее:
.class_1, .class_2 {
	width: 1px
}

.class_3 {
	width: 2px
}


Вроде бы все замечательно и оптимизация классов произошла, НО! Пробуем изменить последовательность классов в scss и запустить сборку заново...

3. Перед сборкой проекта имею следующий scss код (поменял местами class_2 и class_3):
.class_1 {
	width: 1px;
}

.class_3 {
	width: 2px;
}

.class_2 {
	width: 1px;
}


4. После сборки на выходе имею следующее:
.class_1 {
	width: 1px
}

.class_3 {
	width: 2px
}

.class_2 {
	width: 1px
}


Хотелось бы оптимизировать все классы, а не только те, которые идут исключительно друг за другом.

Подскажите плагин (и его настройки), чтобы объединять названия классов, если у них одинаковые стили?

Спасибо!

UPD:
В связи с тем, что многих будоражит width: 2px; - заменим его на color: red;

На входе:
.class_1 {
	width: 1px;
}

.class_3 {
	color: red;
}

.class_2 {
	width: 1px;
}


На выходе:
.class_1 {
	width: 1px
}

.class_3 {
	color: red
}

.class_2 {
	width: 1px
}
  • Вопрос задан
  • 456 просмотров
Решения вопроса 1
potapchino
@potapchino
Хотелось бы оптимизировать все классы
это называется не оптимизация, а «я нифига не понимаю че происходит»

до «оптимизации»
<div class="class_3 class_2"></div> // 1px

после «оптимизации» (которую вы ожидаете) ширина сломается, т.к. class_2 уедет вверх:
<div class="class_3 class_2"></div> // 2px

поэтому здесь ошибки нет никакой, все ок, оптимизатор ваш нормально отрабатывает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ar5
Попробуй этот плагин https://github.com/NMFR/optimize-css-assets-webpac...
Оптимизирует финальную сборку. Под капотом тот же cssnano
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы