J'essaie de créer un module npm et je ne trouve aucune instruction sur le site officiel de babeljs. Comment utilisez-vous le package babel-runtime? Du nom, je suppose qu'il devrait être placé dans la section "dépendances" de package.json, non?
Absolument aucune information ici: https://github.com/babel/babel/tree/master/packages/babel-runtime
J'ai trouvé un exemple ici: https://strongloop.com/strongblog/javascript-babel-future/ mais quand j'exécute "babel -h", il ne répertorie pas --optional comme paramètre valide.
Le runtime est facultatif, mais comme tout le reste dans Babel 6, il est principalement activé en ajoutant un plugin. Dans ce cas, vous avez besoin de http://babeljs.io/docs/plugins/transform-runtime/
plugins: ["transform-runtime"]
babel-runtime
est un paquet qui contient un polyfill et bien d'autres choses que Babel peut référencer. Vous l'installeriez dans votre application avec npm install babel-runtime
transform-runtime
est un plugin Babel pour traiter votre code source et injecter import foo from "babel-runtime"
instructions afin que babel-runtime
est réellement utilisé. Vous devez également l'installer avec npm install babel-plugin-transform-runtime
.Lors du transpilage de votre code, Babel injectera en fait des aides pour émuler des fonctionnalités non prises en charge par la version ES que vous ciblez.
Par exemple: class MyClass {}
exploite l'aide en ligne _classCallCheck
, Qui est également accessible via require('babel-runtime/helpers/classCallCheck')
.
Par défaut, ces assistants ne sont pas partagés entre les unités de compilation (les fichiers). L'équipe de Babel pourrait cependant être intéressante à les factoriser en un seul endroit, permettant ainsi de gagner de la place lors de plusieurs utilisations.
Ce problème a été résolu en créant le plugin babel-plugin-transform-runtime
, Qui parcourt les AST et remplace les injections des assistants par les exigences appropriées du module babel-runtime
. De cette façon les aides sont partagées à travers la base de code et la duplication est évitée.
En supposant que vous ayez un exécutant l'environnement Babel :
babel-plugin-transform-runtime
(en tant que devDependency
), qui transforme votre code pour supprimer les assistants et utilise ceux de babel-runtime
. Vous devez l'ajouter au tableau plugins
de votre configuration Babel babel-runtime
(en tant que dependency
), qui est la bibliothèque réelle babel-plugin-transform-runtime
Suppose que vous allez avoir dans votre dependencies
, il sera utilisé par votre code transpilé lors de l'exécution. Vous n'avez pas besoin de l'exiger n'importe où dans votre code. npm run build
Compile le dossier lib
dans dist
npm start
Démarre le dossier dist
(qui dépend de babel-runtime
)package.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"
]
}
}