gulp.spritesmith 在生成的 css 文件中抑制 "icon-" 前缀

gulp.spritesmith to supress "icon-" prefix in the generated css file

我正在使用 gulp.spritesmith 自动生成精灵图像和 css。一切正常,除了生成的 css 是 haivng "icon-" 前缀。我不想添加此前缀,因为我有现有的 HTML 标记并且我不想更改标记。 以下是我的 gulp 任务。

'use strict';
var gulp = require('gulp');
var spritesmith = require('gulp.spritesmith');


gulp.task('sprite', function () {    

    var spriteData =
            gulp.src('./sprite/*.*') // source path of the sprite images
            .pipe(spritesmith({
                imgName: 'sprite.png',
                cssName: 'sprite.css'
            }));

    spriteData.img.pipe(gulp.dest("./css")); // output path for the sprite
    spriteData.css.pipe(gulp.dest("./css")); // output path for the CSS
});

以下是我生成的 css.

.icon-icon1 {
  background-image: url(sprite.png);
  background-position: 0px 0px;
  width: 120px;
  height: 120px;
}
.icon-icon2 {
  background-image: url(sprite.png);
  background-position: -120px 0px;
  width: 120px;
  height: 120px;
}

请帮忙压制"icon-"。

您可以使用 gulp-replace 删除 "icon-" 前缀。

您的 sprite 任务的最后一行将变为

spriteData.css
  .pipe(replace(/^\.icon-/gm, '.'))
  .pipe(gulp.dest("./css"));

您也可以使用库的 cssSelector

cssOpts: {
  cssSelector: function (sprite) {
    return '.' + sprite.name;
  }
}