Open amcdnl opened 8 years ago
It would be nice to have automatic CSS generation included in this loader.
This is a gulp extension I wrote that I'm wonder if your interested on collaborating on integrating. This also generates a HTML preview of the icons too.
build.icons.js
var gulp = require('gulp'); var iconfont = require('gulp-iconfont'); var iconfontCss = require('gulp-iconfont-css'); var paths = require('./paths'); var consolidate = require('gulp-consolidate'); gulp.task('build:icons', function(done) { var fontName = 'icons'; var cssClass = 'icon'; return gulp.src(paths.svgs) .pipe(iconfontCss({ fontName, cssClass: cssClass, targetPath: 'styles/icons.css', fontPath: 'fonts/icons/', path: 'template.css' })) .pipe(iconfont({ fontName, normalize:true, fontHeight: 1001, log: () => {}, formats: ['ttf', 'eot', 'woff', 'svg'] })) .on('glyphs', function(glyphs, options) { gulp.src('template.html') .pipe(consolidate('lodash', { glyphs: glyphs, fontName: fontName, cssClass: cssClass })) .pipe(gulp.dest(`${paths.output}assets/fonts/icons`)); }) .pipe(gulp.dest(`${paths.output}assets/fonts/icons`)); });
template.css
@charset "UTF-8"; @font-face { font-family: "<%= fontName %>"; src: url('<%= fontPath %><%= fontName %>.eot'); src: url("../assets/fonts/fontastic/swimlane.eot?#iefix") format("embedded-opentype"), url('<%= fontPath %><%= fontName %>.woff') format('woff'), url('<%= fontPath %><%= fontName %>.ttf') format('truetype'), url('<%= fontPath %><%= fontName %>.svg#<%= fontName %>') format('svg'); font-weight: normal; font-style: normal; } [class^="<%= cssClass %>-"]:before, [class*=" <%= cssClass %>-"]:before { font-family: "<%= fontName %>" !important; speak: none; line-height: 1; font-style: normal !important; font-weight: normal !important; font-variant: normal !important; text-transform: none !important; text-decoration: none !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } <% _.each(glyphs, function(glyph) { %> .<%= cssClass %>-<%= glyph.fileName %>:before { content: "\<%= glyph.codePoint %>"; } <% }); %>
template.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Font Reference - Swimlane</title> <link rel="stylesheet" href="../../styles/icons.css"> <style type="text/css">html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:100%;vertical-align:baseline}body{line-height:1;color:#000;background:#fff}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0;vertical-align:middle}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}a img{border:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{font-family:'Dosis','Tahoma',sans-serif}.container{margin:15px auto;width:80%}h1{margin:40px 0 20px;font-weight:700;font-size:38px;line-height:32px;color:#fb565e}h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercase;font-weight:500}.small{font-size:14px;color:#a5adb4;}.small a{color:#a5adb4;}.small a:hover{color:#fb565e}.glyphs.character-mapping{margin:0 0 20px 0;padding:20px 0 20px 30px;color:rgba(0,0,0,0.5);border:1px solid #d8e0e5;-webkit-border-radius:3px;border-radius:3px;}.glyphs.character-mapping li{margin:0 30px 20px 0;display:inline-block;width:90px}.glyphs.character-mapping .icon{margin:10px 0 10px 15px;padding:15px;position:relative;width:55px;height:55px;color:#162a36 !important;overflow:hidden;-webkit-border-radius:3px;border-radius:3px;font-size:32px;}.glyphs.character-mapping .icon svg{fill:#000}.glyphs.character-mapping input{margin:0;padding:5px 0;line-height:12px;font-size:12px;display:block;width:100%;border:1px solid #d8e0e5;-webkit-border-radius:5px;border-radius:5px;text-align:center;outline:0;}.glyphs.character-mapping input:focus{border:1px solid #fbde4a;-webkit-box-shadow:inset 0 0 3px #fbde4a;box-shadow:inset 0 0 3px #fbde4a}.glyphs.character-mapping input:hover{-webkit-box-shadow:inset 0 0 3px #fbde4a;box-shadow:inset 0 0 3px #fbde4a}.glyphs.css-mapping{margin:0 0 60px 0;padding:30px 0 20px 30px;color:rgba(0,0,0,0.5);border:1px solid #d8e0e5;-webkit-border-radius:3px;border-radius:3px;}.glyphs.css-mapping li{margin:0 30px 20px 0;padding:0;display:inline-block;overflow:hidden}.glyphs.css-mapping .icon{margin:0;margin-right:10px;padding:13px;height:50px;width:50px;color:#162a36 !important;overflow:hidden;float:left;font-size:24px}.glyphs.css-mapping input{margin:0;margin-top:5px;padding:8px;line-height:16px;font-size:16px;display:block;width:150px;height:40px;border:1px solid #d8e0e5;-webkit-border-radius:5px;border-radius:5px;background:#fff;outline:0;float:right;}.glyphs.css-mapping input:focus{border:1px solid #fbde4a;-webkit-box-shadow:inset 0 0 3px #fbde4a;box-shadow:inset 0 0 3px #fbde4a}.glyphs.css-mapping input:hover{-webkit-box-shadow:inset 0 0 3px #fbde4a;box-shadow:inset 0 0 3px #fbde4a}</style> </head> <body> <div class="container"> <h1>Swimlane: <%= fontName %></h1> <ul class="glyphs css-mapping"> <% _.each(glyphs, function(glyph) { %> <li> <div class="icon <%= cssClass %>-<%= glyph.name %>"></div> <input type="text" readonly="readonly" value="<%= cssClass %>-<%= glyph.name %>"> </li> <% }); %> </ul> </div> <script> (function() { var glyphs, i, len, ref; ref = document.getElementsByClassName('glyphs'); for (i = 0, len = ref.length; i < len; i++) { glyphs = ref[i]; glyphs.addEventListener('click', function(event) { if (event.target.tagName === 'INPUT') { return event.target.select(); } }); } }).call(this); </script> </body> </html>
true that, will add it soon :) Thanks man
It would be nice to have automatic CSS generation included in this loader.
This is a gulp extension I wrote that I'm wonder if your interested on collaborating on integrating. This also generates a HTML preview of the icons too.
build.icons.js
template.css
template.html