Para el código del lado del cliente , está haciendo lo correcto. babelify
y envíelo al cliente.
Para el código del lado del servidor , simplemente haría una compilación regular usando babel-cli
De acuerdo con http://babeljs.io/docs/setup/#babel_register , nobabel-register
está diseñado para uso en producción : el enlace require se recomienda principalmente para casos simples.
para Babel 6+
A partir de Babel 6, no se incluyen transformaciones por defecto. Así que comencemos instalando babel-cli
y babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Agregue una transformación a su .babelrc
archivo: este es el módulo personalizado que descargamos anteriormente. Eche un vistazo a la lista completa de ajustes preestablecidos para ver cuáles son los más adecuados para usted.
{
"presets": ["es2015"]
}
Agregue un build
script a su package.json
. A continuación src
se muestran sus archivos de entrada y build
los archivos de salida transformados
"scripts": {
"build": "babel src -d build"
}
¡Entonces constrúyelo!
$ npm run build
Luego ejecuta tu código. En este punto, querrá ejecutar los archivos en su build
directorio
$ npm start
para Babel <= 5, solo use el gancho require.
require("babel/register");
Todos los archivos posteriores requeridos por el nodo con las extensiones .es6 , .es , .jsx y .js serán transformados por Babel. El polyfill también se requiere automáticamente.
Podrá mantener sus archivos fuente en ES6 pero aún ejecutarlos usando node server.js
Según sus comentarios, parece que tiene un pequeño problema. Preste especial atención a la parte resaltada en amarillo arriba. Su primer archivo solo puede ser ES5, que es ejecutado por el propio nodo. Todas las necesidades posteriores serán transformadas por Babel ...
Así es como podría verse una configuración típica
server.js
require("babel/register");
var app = require("./app.js");
app.js
¡préndelo!
$ node server.js
require("babel/register");
mi server.js y cuando lo ejecuto aparecenode server.js
el error:Unexpected reserved word: import ...
así que no parece funcionar