Pourquoi utiliser babel-polyfill alors que Babel transpile déjà vers ES5 ?

Si vous vous êtes également posé la question, l'utilisation de babel-polyfill pallie l'absence de fonctionnalités en ES5. Les classes d'ES6, par exemple, ne sont que du sucre syntaxique, donc Babel peut les remplacer par des fonctions utilisées comme constructeurs, ajouter des méthodes à l'aide de prototype ...etc.... Mais les fonctionnalités réellement nouvelles, qui n'ont pas déquivalent en ES5, ne peuvent pas être transpilées, d'où l'utilisation de babel-polyfill. Ainsi, on ne peut pas transpiler array.from, set, map, promise, generators functions ...etc... . Ni même le si populaire Object.assign({}, objToClone) en ces temps de forte incitation à l'immutabilité.
Quant à la taille de babel-polyfill (près de 50 Ko), ce problème peut être contourné en utilisant uniquement les polyfills dont vous avez besoin en les installant individuellement via npm. Par exemple "object-assign" en polyfill de Object.assign()