Open azproduction opened 10 years ago
Maybe you'd pay attention to Polyfiller :)
@monolithed awesome! That is I really need:
var polyfiller = new Polyfiller();
var list = polyfiller.find([ 'Promise', 'Fetch', 'URL' ]);
One question, are these polyfills cross-browser?
У меня была задача собрать полифилы, которые теоретически совместимы с IE9 (очень трудоемко поддерживать более ранние версии, поэтому я добавил возможность указать директорию для пользовательских полифилов).
Есть планы подключить core-js, но пока нет возможности это сделать более или менее адекватно (есть вопросы к самому API и покрытию тестами).
Ад какой-то:
require('core-js');
require('LiveScript');
require('core-js/build/build')({
modules: ['es6', 'core.dict'],
blacklist: ['es6.reflect'],
library: false,
}, console.log.bind(console));
Также хочу обратить внимание, что пока доступны не все ES6-полифилы. Постепенно буду добавлять оставшиеся из es-shims (неохота их собирать самостоятельно).
@monolithed тащемта, сборка из js упрощена - удалены зависимости, нужен только webpack
. Говорил же, что это был не публичный API. Есть вопросы по тестам - задавайте, а лучше, если чего-то не видите, добавляйте. Вопросы по API - задавайте, предлагайте улучшения, в чём проблема? :)
@zloirock, хм. похоже я пропустил это. Отлично!
Меня интересует как собрать модуль без зависимостей, т.е. когда я запрашиваю Array.from
, то мне не нужно включать в сборку Symbols
или что-то из ES5
. Реально? :)
Также хотелось бы в колбеке получить массив всех полифилов, которые вошли в сборку.
@monolithed к сожалению, на данный момент это API только для сборки по модулям, для максимальной гибкости, а не по фичам. Самый простой способ узнать, что нужно включить в сборку - посмотреть зависимости в commonjs точках входа. Symbol
не является зависимостью Array.from
, только итератор строки (с массивами он и так работает полностью корректно). А вот с ES5 проблема - модуль ES5 (порядка 4кб после минификации, если не ошибаюсь) придётся включать полностью для ES3 окружений, он не разбит на составляющие. Итого - ['es6.array.from', 'es6.string.iterator']
для ES5 окружения, ['es5', 'es6.array.from', 'es6.string.iterator']
для ES3.
Ну или можно не заморачиваться с этим API и зависимостями, а просто натравить commonjs сборщик на необходимые точки входа.
@zloirock,
к сожалению, на данный момент это API только для сборки по модулям, а не по фичам.
Если на уровне директории modules
, то ок, там вроде только Math
одним файлом.
Тогда остается только колбек со списком включенных в сборку полифилов, чтобы можно было у себя исключать дубликаты. С этим могут быть сложности? :)
@monolithed es6.reflect
, es6.math
, es6.number.statics
- они будут разделены в следующей версии. es5
пока разделять не собираюсь, создаст лишние проблемы. Ну а всё остальное разбито насколько можно.
@zloirock, а es5
опциональный модуль?
Если нет, то в каких случаях он может попасть в сборку?
@monolithed es5
само собой опциональный, но для ES3 окружений нужен в любом случае.
Что касается колбека - в JS API вы и так передаёте список необходимых модулей / пространств имён, сборкой занимается webpack
, но дополнительно подключает только внутренние модули. Ну а если собирать используя точки входа фич - тут уж смотря чем собираете, с задачей не сталкивался, нужно смотреть =)
@zloirock
Что касается колбека - в JS API вы и так передаёте список необходимых модулей / пространств имён, сборкой занимается webpack, но дополнительно подключает только внутренние модули.
А может ли получится какой-то модуль будет требовать другой модуль?
@monolithed модули - если не ошибаюсь, нет. Только внутренние. Зависимости обозначены в точках входа, как в примере с итератором строки для Array.from
.
@zloirock, ну тогда ок, спасибо!
Issues
attachEvent
So plugins for Autopolyfiller is a really good idea. Now I can group them into "3 channels"
autopolyfiller-prev
with all old polyfillsautopolyfiller-stable
with current polyfillsautopolyfiller-next
with ES6 polyfills