Per il codice lato client , stai facendo la cosa corretta. babelify
e spedirlo al cliente.
Per il codice lato server , farei solo una build normale usando babel-cli
Secondo http://babeljs.io/docs/setup/#babel_register , nonbabel-register
è inteso per uso di produzione - L'hook require è consigliato principalmente per casi semplici.
per Babel 6+
A partire da Babel 6, nessuna trasformazione è inclusa per impostazione predefinita. Quindi iniziamo installando babel-cli
e babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Aggiungi una trasformazione al tuo .babelrc
file: questo è il primo modulo che abbiamo scaricato sopra. Dai un'occhiata all'elenco completo dei preset per vedere quale (i) è più adatto a te.
{
"presets": ["es2015"]
}
Aggiungi uno build
script al tuo file package.json
. Di seguito src
sono riportati i file di input e build
i file di output trasformati
"scripts": {
"build": "babel src -d build"
}
Allora costruiscilo!
$ npm run build
Quindi esegui il codice. A questo punto, ti consigliamo di eseguire i file nella tua build
directory
$ npm start
per Babel <= 5, usa semplicemente l'hook require.
require("babel/register");
Tutti i file successivi richiesti dal nodo con le estensioni .es6 , .es , .jsx e .js verranno trasformati da Babel. Anche il polyfill è richiesto automaticamente.
Sarai in grado di mantenere i tuoi file sorgente in ES6 ma comunque eseguirli usando node server.js
Secondo i tuoi commenti, sembra che tu abbia un piccolo problema. Prestare particolare attenzione alla parte evidenziata in giallo sopra. Il tuo primo file può essere solo ES5, che viene eseguito dal nodo stesso. Tutte le successive richieste saranno trasformate da Babel ...
Ecco come potrebbe apparire una configurazione tipica
server.js
require("babel/register");
var app = require("./app.js");
app.js
accendilo!
$ node server.js
require("babel/register");
mio server.js e quando corronode server.js
ottengo l'errore:Unexpected reserved word: import ...
quindi non sembra funzionare