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.
Tout d'abord, installez gulp (évident...) et faites ce que vous avez à faire avec gulp.
Maintenant, vous êtes prêt(e) ? Okay, go.
Oui, deux packages, gulp-iconfont et gulp-iconfont-css.
$ npm install gulp-iconfont gulp-iconfont-css --save-dev
// import
var gulp = require("gulp");
var iconfont = require("gulp-iconfont");
var iconfontCss = require("gulp-iconfont-css");
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"));
});
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/