Jekyll + Polymer + Vulcanize - Как это работает?

Я только начал интегрировать Polymer в свою среду Jekyll. По сути, я создал файл bower.json в корне Jekyll, который требует следующих зависимостей:

...
],
 "dependencies": {
"iron-elements": "PolymerElements/iron-elements#^1.0.0",
"paper-elements": "PolymerElements/paper-elements#^1.0.1",
"polymer": "Polymer/polymer#^1.2.0"
  }
}

После запуска bower install в моем корне Jekyll я получаю папку bower_components со всеми запрошенными мною пакетами Polymer. В моем шаблоне Jekyll head.htmlЯ включаю

<link rel="import" href="{{ site.baseurl }}/bower_components/paper-item/paper-item.html">
<link rel="import" href="{{ site.baseurl }}/bower_components/paper-tabs/paper-tabs.html">
<link rel="import" href="{{ site.baseurl }}/bower_components/paper-toolbar/paper-toolbar.html">
<link rel="import" href="{{ site.baseurl }}/bower_components/iron-icons/iron-icons.html">
<link rel="import" href="{{ site.baseurl }}/bower_components/paper-icon-button/paper-icon-button.html">
<link rel="import" href="{{ site.baseurl }}/bower_components/iron-flex-layout/iron-flex-layout.html">
 ...

для того, чтобы интегрировать нужные полимерные пакеты. я бегу jekyll serve создать и увидеть страницу. Все идет нормально.

Тем не менее, я чувствую, что это может привести к увеличению времени загрузки моей страницы, не так ли? Я почти уверен, что тест скорости работы собственного сайта Google попросит меня уменьшить количество http-вызовов. Как я обнаружил, Polymer предоставляет пакет с именем vulcanize объединить запросы http в один: https://github.com/polymer/vulcanize

Честно говоря, я понятия не имею, как интегрировать это в свой процесс. Я видел несколько документов, которые говорят о grunt но, честно говоря, я понятия не имею об этом.

Может ли кто-нибудь предоставить небольшой материал о том, как сжимать мою Jekyll-страницу из Polymer (html, html Calls, CSS...) ? Спасибо!

1 ответ

У меня была такая же проблема, и, наконец, я нашел решение, если вы все еще работаете над этим. (Первоначально опубликовано здесь)

Я использовал Gulp, копируя Polymer Starter Kit (1.2.3). Я использовал package.json, tasks/ каталог и модифицированный gulpfile.js. Я изменил поведение default а также serve Задачи для запуска Jekyll обслуживают и встраивают в оболочку. Я также изменил ссылки на каталоги в gulpfile для вулканизации файлов в app/_site/ вместо app/,

var spawn = require('child_process').spawn;
var argv = require('yargs').argv;

gulp.task('jekyllbuild', function(done) {
  return spawn('bundle', ['exec', 'jekyll', 'build'], { stdio: 'inherit' })
      .on('close', done);
});

// Build production files, the default task
gulp.task('default', ['clean'], function(cb) {
  // Uncomment 'cache-config' if you are going to use service workers.
  runSequence(
    'jekyllbuild',
    ['ensureFiles', 'copy', 'styles'],
    'elements',
    ['images', 'fonts', 'html'],
    'vulcanize', // 'cache-config',
    cb);
});

gulp.task('serve', function(done) {
  if (argv.port) {
    return spawn('bundle', ['exec', 'jekyll', 'serve', '--port=' + argv.port], { stdio: 'inherit' })
        .on('close', done);
  } else {
    return spawn('bundle', ['exec', 'jekyll', 'serve'], { stdio: 'inherit' })
        .on('close', done);
  }
});

Использование BrowserSync имело бы намного более чистый эффект, но это простой способ получить функциональность Jekyll и выгоду от вулканизации для производства. (Обратите внимание, что вы также должны установить yargs пакет для обработки спецификации порта.) Весь мой gulpfile здесь.

Другие вопросы по тегам