Para el código del lado del cliente , está haciendo lo correcto. babelifyy 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-cliy babel-preset-es2015.
$ npm install --save-dev babel-cli babel-preset-es2015
Agregue una transformación a su .babelrcarchivo: 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 buildscript a su package.json. A continuación srcse muestran sus archivos de entrada y buildlos 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 builddirectorio
$ 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.jsel error:Unexpected reserved word: import ...así que no parece funcionarAcabo de escribir una publicación de blog sobre este tema.
La documentación de la CLI de Babeljs advierte lo siguiente:
Este es un ejemplo de cómo puede configurar los scripts npm para ejecutar su aplicación con node en lugar 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" },Puede encontrar más detalles en la publicación del blog.
fuente
Es importante sopesar los pros y los contras de usar babel-node en producción.
babel-nodeagrega entre medio segundo y un segundo al costo de inicio, en hardware básico. Pero si su aplicación es un servidor de larga duración, ese costo inicial no importará mucho.Por otra parte,
src/liby separadosdistimportde archivos locales, ¿importará desdesrc/myutilso desdelib/myutils? El usobabel-nodeelimina ese problema.Solo uso Babel para soporte de módulos. Ahora, V8 acaba de lanzar soporte para módulos el 10 de enero de 2017. Con suerte, veremos el soporte de módulos en Node bajo una bandera en unos meses, haciendo que mi razón para usar Babel sea discutible.
fuente
La respuesta de @ cuadraman es más precisa que @naomik.
Para responder brevemente a su pregunta: no,
babel-nodeusted no debería invocarlo explícitamente.babel-nodees una biblioteca privada que consumebabel-cli.El tutorial oficial tiene todo lo que necesita para comenzar a funcionar en el nodo (¡no en el lado del navegador!): Https://github.com/babel/example-node-server . LEERLO! Encontré tantos tutoriales de blogs engañosos que se usaban en varias formas, y encontré este artículo el más fácil de seguir.
Bono: contrariamente a lo que mucha gente piensa, toda la magia transpiling se puede instalar localmente (usando
npm install --save-dev babel-cli nodemon babel-preset-es2015 babel-preset-stage-2). ¡No es necesario instalar Babel o cualquiera de sus módulos auxiliares a nivel mundial! Bastante ingenioso.fuente