Spec-Zone.ru β€Ί Babel 7

@babel/polyfill

🚨 По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° Babel 7.4.0, этот ΠΏΠ°ΠΊΠ΅Ρ‚ устарСл Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ прямого Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ core-js/stable (для полифиллирования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ECMAScript):

import "core-js/stable";

Если Π²Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ асинхронныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ES5, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ @babel/core ΠΈΠ»ΠΈ @babel/plugin-transform-regenerator ΡΡ‚Π°Ρ€ΡˆΠ΅ 7.18.0, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ regenerator runtime. Он автоматичСски загруТаСтся ΠΏΡ€ΠΈ использовании ΠΎΠΏΡ†ΠΈΠΈ @babel/preset-env's useBuiltIns: "usage" ΠΈΠ»ΠΈ @babel/plugin-transform-runtime.

Babel Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ regenerator runtime ΠΈ core-js.

Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ срСду ES2015+ (Π±Π΅Π· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ < Stage 4) ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для использования Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π° Π½Π΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅/инструмСнтС. (Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π» автоматичСски загруТаСтся ΠΏΡ€ΠΈ использовании babel-node).

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Promise ΠΈΠ»ΠΈ WeakMap, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Array.from ΠΈΠ»ΠΈ Object.assign, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляров, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Array.prototype.includes, ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (ΠΏΡ€ΠΈ условии использования ΠΏΠ»Π°Π³ΠΈΠ½Π° regenerator).

Установка​

  • npm
  • Yarn
  • pnpm
npm install --save @babel/polyfill
yarn add @babel/polyfill
pnpm add @babel/polyfill

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π» (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся ΠΏΠ΅Ρ€Π΅Π΄ вашим исходным ΠΊΠΎΠ΄ΠΎΠΌ), Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» dependency, Π° Π½Π΅ devDependency

РазмСр​

ΠŸΠΎΠ»ΠΈΡ„ΠΈΠ»Π» прСдоставляСтся Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с @babel/preset-env ΠΈ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ useBuiltIns, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π» вСсь ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ всСгда Π½ΡƒΠΆΠ΅Π½. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ TC39​

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ являСтся Stage 4, @babel/polyfill Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для вас. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ core-js, ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ это Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² @babel/polyfill Π² скором Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ИспользованиС Π² Node/Browserify/Webpack​

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚ΠΎΡ‡Π΅Ρ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° вашСго прилоТСния.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ вызываСтся ΠΏΠ΅Ρ€Π΅Π΄ всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°/require!

require("@babel/polyfill");

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ синтаксис ES6's import Π² Ρ‚ΠΎΡ‡Π΅Ρ‡ΠΊΠ΅ Π²Ρ…ΠΎΠ΄Π° вашСго прилоТСния, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ вмСсто этого ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π» Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚ΠΎΡ‡Π΅Ρ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»ΠΎΠ² Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ:

import "@babel/polyfill";

Π’ webpack Π΅ΡΡ‚ΡŒ нСсколько способов Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Ρ‹:

  • ΠŸΡ€ΠΈ использовании вмСстС с @babel/preset-env,

    • Если useBuiltIns: 'usage' ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² .babelrc, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ @babel/polyfill Π½ΠΈ Π² массив webpack.config.js entry, Π½ΠΈ Π² source. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ @babel/polyfill всё Π΅Ρ‰Ρ‘ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ.

    • Если useBuiltIns: 'entry' ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² .babelrc, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ @babel/polyfill Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ‚ΠΎΡ‡Π΅Ρ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° вашСго прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ require ΠΈΠ»ΠΈ import, ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅.

    • Если ΠΊΠ»ΡŽΡ‡ useBuiltIns Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΈΠ»ΠΈ ΠΎΠ½ явно Π·Π°Π΄Π°Π½ ΠΊΠ°ΠΊ useBuiltIns: false Π² вашСм .babelrc, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ @babel/polyfill нСпосрСдствСнно Π² массив entry Π² вашСм webpack.config.js.

module.exports = {
  entry: ["@babel/polyfill", "./app/js"],
};
  • Если @babel/preset-env Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ @babel/polyfill Π² массив webpack entry, ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ‚ΠΎΡ‡Π΅Ρ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ import ΠΈΠ»ΠΈ require, Π½ΠΎ это Π½Π΅ рСкомСндуСтся.

ΠœΡ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ: ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ useBuiltIns ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (ΠΈΠ· этого ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ источника).

ИспользованиС Π² браузСрС​

Доступно ΠΈΠ· Ρ„Π°ΠΉΠ»Π° dist/polyfill.js Π² Ρ€Π°ΠΌΠΊΠ°Ρ… выпуска @babel/polyfill npm. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ всСм вашим скомпилированным ΠΊΠΎΠ΄ΠΎΠΌ Babel. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ своим скомпилированным ΠΊΠΎΠ΄ΠΎΠΌ, Π»ΠΈΠ±ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² <script> ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•: НС require это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ browserify ΠΈ Ρ‚.Π΄., ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ @babel/polyfill.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈβ€‹

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для использования Π² инструмСнтС/Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ transform-runtime. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляров, упомянутыС Π²Ρ‹ΡˆΠ΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Array.prototype.includes.​

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ES2015 Π²Ρ‹ фактичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ @babel/polyfill ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ runtime. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Object.assign) ΠΈΠ»ΠΈ просто Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ срСда, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ загруТаСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Ρ‹.

Β© 2014-present Sebastian McKenzie
Licensed under the MIT License.
https://babeljs.io/docs/babel-polyfill/

Spec-Zone.ru

Настройки ΠžΡ„Ρ„Π»Π°ΠΉΠ½ Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠŸΠΎΠΌΠΎΡ‰ΡŒ О нас
Spec-Zone .ru
спСцификации, руководства, описания, API