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.
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 connpm install babel-runtime
-
transform-runtime
es un plugin de Babel para procesar su código fuente e inyectarimport foo from "babel-runtime"
sentencias para quebabel-runtime
se utilice realmente. Tú también instale esto connpm install babel-plugin-transform-runtime
.
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 :
- Instalar
babel-plugin-transform-runtime
(comodevDependency
), que transforma su código para eliminar los ayudantes y utiliza el unos enbabel-runtime
. Necesita agregarlo a la matrizplugins
de su configuración de Babel - Instalar
babel-runtime
(comodependency
), que es la biblioteca realbabel-plugin-transform-runtime
asume que va a tener en sudependencies
, 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 carpetalib
endist
-
npm start
inicia la carpetadist
(que depende debabel-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"
]
}
}
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