У меня есть пользовательский процесс сборки для сайта Polymer (Polybuild постоянно разрывает его для всех). Он принимает точки входа в мое приложение и запускает их через vulcanize
и мини-код. Выходной файл представляет собой плоский html-файл с крупными разделами. CSS не минимизируется, потому что minifier нарушает новый синтаксис.Полимер: вулканизирующий/минерализующий сайт разбивает его на Firefox
Выходной HTML-код работает корректно в Chrome, однако он не работает в Firefox. Сайт не загружается и следующий регистрируется в консоли:
TypeError: document.registerElement is not a function
localhost:3000:1:4877
TypeError: Polymer.Base._getExtendedPrototype is not a function
localhost:3000:1:1090
TypeError: this._desugarBehaviors is not a function
localhost:3000:1:2359
<snip repeated desugarBehaviors error>
Можете ли вы сказать мне, почему встроенный версия не работает в одном браузере, но работы в другой, и почему это Firefox, который терпит неудачу? Я не получаю эти ошибки в Chrome.
процесс Мой билд выглядит следующим образом:
build.sh
#!/bin/bash
build_html () {
./node_modules/.bin/vulcanize --inline-css --inline-scripts $1.html > build/$1.pre.html
./minify-html.js build/$1.pre.html build/$1.html
}
echo 1. clean build dir
rm -r ./build
mkdir build
echo 2. copy assets in background
cp -r assets/ build/ &
echo 3. vulcanize and minify entry points
build_html index
build_html register
rm build/*.pre.html
echo 4. copy polyfills
mkdir -p ./build/bower_components/{classlist,webcomponentsjs}
cp ./bower_components/classlist/classList.min.js ./build/bower_components/classlist
cp ./bower_components/webcomponentsjs/webcomponents-lite.min.js ./build/bower_components/webcomponentsjs
cp ./bower_components/webcomponentsjs/webcomponents.min.js ./build/bower_components/webcomponentsjs
преуменьшать-html.js
#!/usr/bin/env node
var hmin = require('html-minifier');
var fs = require('fs');
var src = fs.readFileSync(process.argv[2]).toString();
var res = hmin.minify(src, {
removeComments: true,
removeCommentsFromCDATA: true,
collapseWhitespace: true,
conservativeCollapse: true,
minifyJS: true,
preventAttributesEscaping: true,
minifyJS: true,
customAttrAssign: [ /\$=/ ]
});
fs.writeFileSync(process.argv[3], res);
Оказывается, это могло быть так. Я ранее загружал библиотеку динамически как часть скрипта обнаружения функций, но я либо слишком загружал ее. Я переместил его в тег скрипта, который был размещен до первого импорта html, и он снова работает, как в незастроенной, так и в построенной версии. – FilipW