Pour le code côté client , vous faites la bonne chose. babelify
et expédiez-le au client.
Pour le code côté serveur , je ferais juste une construction régulière en utilisant babel-cli
Selon http://babeljs.io/docs/setup/#babel_register , babel-register
n'est pas destiné à une utilisation en production - Le hook require est principalement recommandé pour les cas simples.
pour Babel 6+
Depuis Babel 6, aucune transformation n'est incluse par défaut. Commençons donc par installer babel-cli
et babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Ajoutez une transformation à votre .babelrc
fichier - c'est le module perst que nous avons téléchargé ci-dessus. Jetez un œil à la liste complète des préréglages pour voir lequel (s) vous convient le mieux.
{
"presets": ["es2015"]
}
Ajoutez un build
script à votre package.json
. Voici src
vos fichiers d'entrée et build
les fichiers de sortie transformés
"scripts": {
"build": "babel src -d build"
}
Alors construisez-le!
$ npm run build
Ensuite, exécutez votre code. À ce stade, vous voudrez exécuter les fichiers de votre build
répertoire
$ npm start
pour Babel <= 5, utilisez simplement le hook require.
require("babel/register");
Tous les fichiers suivants requis par le nœud avec les extensions .es6 , .es , .jsx et .js seront transformés par Babel. Le polyfill est également automatiquement requis.
Vous pourrez conserver vos fichiers source dans ES6 tout en les exécutant en utilisant node server.js
D'après vos commentaires, vous semblez avoir un peu de mal. Faites particulièrement attention à la partie surlignée en jaune ci-dessus. Votre premier fichier ne peut être que ES5, qui est exécuté par le nœud lui-même. Tous les besoins ultérieurs seront transformés par Babel ...
Voici à quoi pourrait ressembler une configuration typique
server.js
require("babel/register");
var app = require("./app.js");
app.js
mets le feu!
$ node server.js
require("babel/register");
dans mes server.js et quand je lance quenode server.js
je reçois l'erreur:Unexpected reserved word: import ...
il ne semble pas fonctionnerJe viens d'écrire un article de blog sur ce sujet
La documentation de la CLI Babeljs avertit ce qui suit:
Voici un exemple de la façon dont vous pouvez configurer les scripts npm pour exécuter votre application avec node au lieu de babel-node.
"scripts": { "clean": "rm -rf build && mkdir build", "build-css": "node-sass scss/app.scss public/css/app.css", "build-server": "babel -d ./build ./server -s", "build": "npm run clean && npm run build-css && npm run build-server", "lint": "eslint source/ --quiet", "start": "node ./build/index.js", "debug": "node --debug ./build/index.js", "test": "for i in $(ls tests/); do babel-node \"./tests/${i}\" | faucet ; done", "validate": "npm run lint; npm run test && npm outdated --depth 0" },
Vous pouvez trouver plus de détails sur l' article du blog
la source
Il est important de peser les avantages et les inconvénients de l'utilisation de babel-node en production.
babel-node
ajoute entre une demi-seconde et une seconde au coût de démarrage, sur le matériel de base. Mais si votre application est un serveur de longue durée, ce coût de démarrage n'aura pas beaucoup d'importance.D'autre part,
src
/lib
et séparésdist
import
partir de fichiers locaux, allez-vous importer depuissrc/myutils
ou depuislib/myutils
? L'utilisationbabel-node
élimine ce problème.J'utilise Babel uniquement pour le support des modules. Maintenant, V8 vient de publier le support des modules le 10 janvier 2017. Espérons que nous verrons le support des modules dans Node sous un drapeau dans quelques mois, ce qui rendra ma raison d'utiliser Babel sans objet.
la source
La réponse de @ cuadraman est plus précise que @naomik.
Pour répondre brièvement à votre question: non,
babel-node
ne devrait pas être invoqué explicitement par vous.babel-node
est une bibliothèque privée consommée parbabel-cli
.Le tutoriel officiel a tout ce dont vous avez besoin pour être opérationnel sur le nœud (pas côté navigateur!): Https://github.com/babel/example-node-server . LIS LE! J'ai trouvé tellement de tutoriels de blog trompeurs qui utilisaient des moyens différents, et j'ai trouvé cet article le plus facile à suivre.
Bonus: contrairement à ce que beaucoup de gens pensent, toute la magie de transpiling peut être installée localement (en utilisant
npm install --save-dev babel-cli nodemon babel-preset-es2015 babel-preset-stage-2
). Pas besoin d'installer Babel ou l'un de ses modules d'assistance dans le monde! Assez chouette.la source