node.js - standalone - ¿Cómo usar babel-runtime en Babel 6?
install babel 7 (2)
Razón fundamental
Al transpilar su código, Babel realmente inyectará ayudantes para emular características que no son compatibles con la versión ES que busca.
Por ejemplo: class MyClass {}
aprovecha el inline helper _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, aunque podría ser interesante factorizarlos en un solo lugar, permite ahorrar espacio cuando se usan varias veces.
Este problema se ha solucionado mediante la creación del babel-plugin-transform-runtime
, que recorre el AST y reemplaza las inyecciones de los ayudantes por los requisitos adecuados del módulo babel-runtime
. De esa manera, los ayudantes se comparten a través del código base y se evita la duplicación.
Cómo usarlo
Suponiendo que tiene un entorno de Babel en ejecución :
- Instale
babel-plugin-transform-runtime
(comodevDependency
), que transforma su código para eliminar a los ayudantes y utiliza los debabel-runtime
. Debe agregarlo a la matriz deplugins
de su configuración de Babel - Instale
babel-runtime
(como unadependency
), que es la biblioteca real quebabel-plugin-transform-runtime
asume que usted va a tener en susdependencies
, y su código transpilado lo usará en el 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"
]
}
}
Estoy tratando de crear un módulo npm y no puedo encontrar instrucciones individuales en el sitio web oficial de babeljs. ¿Cómo se usa el paquete babel-runtime? Por su nombre, supongo que debería colocarse en la sección "dependencias" de package.json, ¿verdad?
Absolutamente ninguna información aquí: https://github.com/babel/babel/tree/master/packages/babel-runtime
Encontré un ejemplo aquí: https://strongloop.com/strongblog/javascript-babel-future/ pero cuando ejecuto "babel -h" no aparece --opcional como un parámetro válido.
El tiempo de ejecución es opcional, pero como todo lo demás en Babel 6, se habilita principalmente agregando un complemento. 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 puede hacer referencia Babel. Lo instalarías en tu aplicación connpm install babel-runtime
-
transform-runtime
es un complemento de Babel para procesar su código fuente e inyectarimport foo from "babel-runtime"
declaracionesimport foo from "babel-runtime"
para que realmente se usebabel-runtime
. También instalarías esto connpm install babel-plugin-transform-runtime
.