tutorial standalone node implement node.js babeljs

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 :

  1. Instale babel-plugin-transform-runtime (como devDependency ), que transforma su código para eliminar a los ayudantes y utiliza los de babel-runtime . Debe agregarlo a la matriz de plugins de su configuración de Babel
  2. Instale babel-runtime (como una dependency ), que es la biblioteca real que babel-plugin-transform-runtime asume que usted va a tener en sus dependencies , 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 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" ] } }

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 con npm install babel-runtime
  • transform-runtime es un complemento de Babel para procesar su código fuente e inyectar import foo from "babel-runtime" declaraciones import foo from "babel-runtime" para que realmente se use babel-runtime . También instalarías esto con npm install babel-plugin-transform-runtime .