Как в gulp генерировать два файла спрайта и более?

Собственно вопрос в заголовке, добавлю лишь то что использую gulp.spritesmith
Таск выглядит следующим образом:
gulp.task('sprite:build', function() {
	var spriteData = 
		gulp.src(path.src.spriteOrigin_1)
			.pipe(plumber())
			.pipe(spritesmith({
				imgName: path.build.spriteImgName_1,
				cssName: '_sprite-data-1.scss',
				cssFormat: 'scss',
				algorithm: 'binary-tree',
				cssTemplate: 'sass.template.mustache',
				cssVarMap: function(sprite) {
					sprite.name = 's-' + sprite.name
				}
			}));

	spriteData.img.pipe(gulp.dest(path.build.spriteImgPath));
	spriteData.css.pipe(gulp.dest(path.src.spriteSass));
});

В нем генерируется еще scss файл с переменными в которых данные для каждого изображения, например
$s-pic-1: 0px 187px 0px -187px 186px 191px 593px 532px '../img/sprite/sprite-2.png';

Эти переменные генерируются по шаблону из файла sass.template.mustache, его содержимое
{{#items}}
${{name}}: {{px.x}} {{px.y}} {{px.offset_x}} {{px.offset_y}} {{px.width}} {{px.height}} {{px.total_width}} {{px.total_height}} '{{{escaped_image}}}';
{{/items}}


Пробовал создавать такой же таск, но с другим путем для исходников. В итоге спрайт то генерируется, но по мимо этого в продакшен папку выплевываются папки с исходниками. Второй файл с переменными так же генерируется, но sass миксин почему то перестает видеть переменные теперь уже с обоих файлов. С одним таском все прекрасно работает.
Миксин выглядит так:
@mixin spriteWidth($sprite) {
	width: nth($sprite,5);
}
@mixin spriteHeight($sprite) {
	height: nth($sprite,6);
}
@mixin spritePosition($sprite) {
	background-position: nth($sprite,3) nth($sprite,4);
}
@mixin sprite($sprite) {
	@include spritePosition($sprite);
	@include spriteWidth($sprite);
	@include spriteHeight($sprite);
}


В общем, помогите разобраться.
  • Вопрос задан
  • 412 просмотров
Решения вопроса 1
andykov
@andykov
Shit happens
Где то у вас ошибка, скорее всего в путях.
У меня спрайты генерируются аналогичным способом.

Исходники:
Есть папка /images в ней у меня две папки под два разных шаблона одного сайта, допустим /sprite-1 и / sprite-2
В каждой папке свои изображения.

Далее:
1. Делаете два таска с разными названиями
2. В gulp.src указываете для каждого таска свой путь на исходники
3. В imgName указываете разное название, оно будет записываться в шаблон
4. В cssName указываете разные названия генерируемого файла с переменными, иначе он будет перезаписываться.
5. Путь до шаблона .mustache оставляете одинаковым

Выдача:
/img
--/sprite-1
--/sprite-2

Единственное что не нравится, это разные выдаваемые папки, в одну почему-то не получилось скидывать, ну и то что два разных таска.

В идеале хотелось бы имеет умный генератор, который смотрел бы на названия файлов исходников и разбивал бы на спрайты, можно задавать префиксы и не париться. Плюс максимальное количество "включенных" в спрайт изображений, а то разбухает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы