Créez vos iconfonts avec gulp-iconfont

kud
kud 2014/05/14

Après notre introduction sur gulp, je vous propose de créer vos propres fontes à partir d'icônes.

J'ai bien galéré lorsque j'ai dû passer de grunt à gulp. Non pas que gulp soit compliqué mais retrouver exactement le même workflow qu'avant, sachant que gulp est jeune et que les plugins sont bien moins nombreux que sur grunt, c'est pas si évident que ça.

M'enfin, il y a toujours une solution à un problème.

Justement, là, mon problème était de répliquer mon process de svg-to-font.

Je me suis creusé les méninges et j'ai finalement trouvé. Cette solution, je vous la propose.

gulp-iconfont

Tout d'abord, installez gulp (évident...) et faites ce que vous avez à faire avec gulp.

Maintenant, vous êtes prêt(e) ? Okay, go.

Installez les packages adéquats

Oui, deux packages, gulp-iconfont et gulp-iconfont-css.

$ npm install gulp-iconfont gulp-iconfont-css --save-dev

Importez-les

// import
var gulp = require("gulp");

var iconfont = require("gulp-iconfont");
var iconfontCss = require("gulp-iconfont-css");

Créez votre propre tâche gulp

Je préconise d'appeler toute transformation d'une image vers une fonte "glyphicon".

// glyphicons
gulp.task("glyphicons", function() {
  return gulp
    .src("src/glyphicons/**/*") // où sont vos svg
    .pipe(
      iconfontCss({
        fontName: "icons", // nom de la fonte, doit être identique au nom du plugin iconfont
        targetPath: "../../styles/shared/icons.css", // emplacement de la css finale
        fontPath: "../fonts/", // emplacement des fontes finales
      }),
    )
    .pipe(
      iconfont({
        fontName: "icons", // identique au nom de iconfontCss
      }),
    )
    .pipe(gulp.dest("src/assets/fonts"));
});

Le final

Voilà l'écriture entière de la tâche :

// import
var gulp = require("gulp");

var iconfont = require("gulp-iconfont");
var iconfontCss = require("gulp-iconfont-css");

gulp.task("glyphicons", function() {
  return gulp
    .src("src/glyphicons/**/*")
    .pipe(
      iconfontCss({
        fontName: "icons", // nom de la fonte, doit être identique au nom du plugin iconfont
        targetPath: "../../styles/shared/icons.css", // emplacement de la css finale
        fontPath: "../fonts/", // emplacement des fontes finales
      }),
    )
    .pipe(
      iconfont({
        fontName: "icons", // identique au nom de iconfontCss
      }),
    )
    .pipe(gulp.dest("src/assets/fonts"));
});

Et voilà, on est bon. On peut transformer nos svg en font. \o/

Vous avez aimé cet article?
Le partager sur Twitter
← Articles
Ne rien rater
Sur les réseaux
Twitter
Facebook
Facebook
Apple Podcast
Soundcloud
Sur le chat
Discord