2016-03-29 2 views
2

Мне нужно сделать простую страницу html, что-то вроде таблицы стилей для значков.Как сгенерировать html-страницу с элементами из scss в Gulp

Глоток задача 'iconfont' генерации глифов шрифты из SVG иконок с этим кодом:

gulp.task('iconfont', function(){ 
    return gulp.src(['assets/svg/*.svg']) 
    .pipe(iconfontCss({ 
     fontName: 'my-icons', 
     cssClass: 'icon', 
     path: 'conf/icon-font.scss', 
     targetPath: '../../scss/layout/_icon-font.scss', 
     fontPath: '../fonts/' 
    })) 
    .pipe(iconfont({ 
     fontName: 'my-icons', 
     prependUnicode: false, 
     formats: ['ttf', 'eot', 'woff'], 
     normalize: true, 
     centerHorizontally: true 
})) 
    .on('glyphs', function(glyphs, options) { 
     // CSS templating, e.g. 
     console.log(glyphs, options); 
    }) 
    .pipe(gulp.dest('assets/fonts/')); 
}); 

и генерирует .Icon-купели SCSS файл с классами:

.icon-calendar { 
    @include icon(calendar); 
} 
.icon-circle { 
    @include icon(circle); 
} 
.icon-sun { 
    @include icon(sun); 
} 
.icon-home { 
    @include icon(home); 
} 

возможно ли это потом генерировать простую страницу html, содержащую элементы с этими именами классов:

<i class="icon-calendar">.icon-calendar</i> 
<i class="icon-circle">.icon-circle</i> 
<i class="icon-sun">.icon-sun</i> 
<i class="icon-home">.icon-home</i> 
+0

Да, только что прочитал т он сгенерировал css, проанализировал его и сгенерировал новый html-файл. Используйте модуль узла 'fs' для чтения и' gulp-wrap' https://www.npmjs.com/package/gulp-wrap для генерации html из шаблона – cl3m

+0

Вы можете использовать механизм шаблонов (рули и т. Д.), который имеет плагин gulp, а затем просто создайте шаблон с заполнителями для имен классов. Вам просто нужна логика, чтобы понять их динамически. – aw04

ответ

3

Приведен пример с использованием шаблона моделирования jade. Это будет читать файл ./test.scss, извлечь все icon-* слова и генерировать ./template.html файл:

Gulpfile.js:

// npm i gulp gulp-jade --save-dev 

var gulp = require('gulp'), 
    jade = require('gulp-jade'), 
    fs = require('fs'); 


gulp.task('default', function() { 
    var re = new RegExp(/icon-(\w+)/); 

    fs.readFile('./test.scss', 'utf8', function(err, data) { 
     var icons = [] 
     if(err) 
      return console.log(err); 
     data.split('\r\n').forEach(function(icon) { 
      var match = re.exec(icon); 
      if(match) 
       icons.push('icon-' + match[1]) 
     }) 
     // the gulp-jade plugin expects template local data to be an object 
     // such as: 
     // {locals: YOUR_DATA_OBJECT_TO_BIND} 
     bind({locals: {icons: icons}}) 
    }); 

    // method that will bind data to your template 
    var bind = function(data) {  
     gulp.src('./template.jade') 
      .pipe(jade(data)) 
      .pipe(gulp.dest('./')) 
    } 
}); 

./test.scss:

.icon-calendar { 
    @include icon(calendar); 
} 
.icon-circle { 
    @include icon(circle); 
} 
.icon-sun { 
    @include icon(sun); 
} 
.icon-home { 
    @include icon(home); 
} 

./template.jade

Переменная icons исходит из аргумента {locals: {icons: {}} в вызове .pipe(jade(data)).

doctype html 
html(lang="en") 
    head 
    // you may want to add a link to your compiled `css` file for a nicer display 
    body 
     for ic in icons 
      i(class=ic) 
       |. 
       = ic 

Полезные ссылки:

+0

У меня проблема с вышеуказанным кодом. Когда я запускаю задачу GULP, все работает, и все генерируется отлично, за исключением файла html. Он генерирует только первый значок, указанный в файле значков SCSS. В настоящее время у меня есть 4 значка в файле, но только 1 появляется после сгенерированного. Я что-то пропустил в файле JADE, чтобы он повторялся и продолжал генерировать каждый значок, указанный в моем SCSS? (FYI Я создаю стиль для компании и вам нужно перечислить все значки, которые создаются каждый раз, когда кто-то бросает их в папку SVG) Спасибо за вашу помощь –

 Смежные вопросы

  • Нет связанных вопросов^_^