Cómo utilizar babel-runtime en Babel 6?


Estoy tratando de crear el módulo npm y no puedo encontrar una sola instrucción en el sitio web oficial de babeljs. ¿Cómo se utiliza el paquete babel-runtime? De nombre Supongo que debería ser colocado en la sección "dependencias" del paquete.json, ¿verdad?

Absolutamente ninguna información aquí: https://github.com/babel/babel/tree/master/packages/babel-runtime

Encontramos un ejemplo aquí: https://strongloop.com/strongblog/javascript-babel-future / pero cuando corro "babel-h" no list optional opcional como parámetro válido.

Author: cosmosb, 2015-12-04

2 answers

El tiempo de ejecución es opcional, pero como todo lo demás en Babel 6, se habilita principalmente agregando un plugin. En este caso, necesita http://babeljs.io/docs/plugins/transform-runtime /

plugins: ["transform-runtime"]
  • babel-runtime es un paquete que contiene un polyfill y muchas otras cosas a las que Babel puede hacer referencia. Lo instalaría en su aplicación con npm install babel-runtime
  • transform-runtime es un plugin de Babel para procesar su código fuente e inyectar import foo from "babel-runtime" sentencias para que babel-runtime se utilice realmente. Tú también instale esto con npm install babel-plugin-transform-runtime.
 7
Author: loganfsmyth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-29 20:25:34

Justificación

Al transpilar su código, Babel inyectará ayudantes para emular características no soportadas por la versión ES a la que se dirige.

Por ejemplo: class MyClass {} aprovecha el ayudante inline _classCallCheck, al que también se puede acceder a través de require('babel-runtime/helpers/classCallCheck').

De forma predeterminada, esos ayudantes no se comparten entre las unidades de compilación (los archivos). El equipo de Babel, sin embargo, podría ser interesante factorizarlos en un solo lugar, lo que permite ahorrar espacio cuando se utilizan varias veces.

Este problema se ha solucionado creando el complemento babel-plugin-transform-runtime, que recorre el AST y reemplaza las inyecciones de ayudantes por los requisitos apropiados del módulo babel-runtime. De esta manera, los ayudantes se comparten a través del código base y se evita la duplicación.

Cómo usarlo

Asumiendo que tienes un ejecutando el entorno de Babel :

  1. Instalar babel-plugin-transform-runtime (como devDependency), que transforma su código para eliminar los ayudantes y utiliza el unos en babel-runtime. Necesita agregarlo a la matriz plugins de su configuración de Babel
  2. Instalar babel-runtime (como dependency), que es la biblioteca real babel-plugin-transform-runtime asume que va a tener en su dependencies, será utilizada por su código transpilado en tiempo de ejecución. No es necesario que lo requiera en ningún lugar de su código.

Fragmento mínimo

  • npm run build compila la carpeta lib en dist
  • npm start inicia la carpeta dist (que depende de babel-runtime)

paquete.json

{
  "scripts": {
    "build": "babel lib --out-dir=dist",
    "start": "node dist"
  },
  "dependencies": {
    "babel-runtime": "^6.9.2"
  },
  "devDependencies": {
    "babel-cli": "^6.10.1",
    "babel-plugin-transform-runtime": "^6.9.0"
  },
  "babel": {
    "plugins": [
      "transform-runtime"
    ]
  }
}
 31
Author: aymericbeaumet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-30 22:32:30