Pour le code côté client , vous faites la bonne chose. babelifyet 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-registern'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-cliet babel-preset-es2015.
$ npm install --save-dev babel-cli babel-preset-es2015
Ajoutez une transformation à votre .babelrcfichier - 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 buildscript à votre package.json. Voici srcvos fichiers d'entrée et buildles 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 buildré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.jsje reçois l'erreur:Unexpected reserved word: import ...il ne semble pas fonctionner