Per il codice lato client, stai facendo la cosa giusta babelify
e spedirlo al cliente.
Per il codice lato server, vorrei solo fare una build regolare utilizzando babel-cli
According to http://babeljs.io/docs/setup/#babel_register , babel-register
is not meant for production use — The require hook is primarily recommended for simple cases.
per Babel 6+
Come di Babele 6, non trasformazioni sono inclusi di default . Quindi iniziamo installando babel-cli
e babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Aggiungi una trasformazione al .babelrc
file di — questo è il modulo prest abbiamo scaricato in precedenza. Dai uno sguardo allo full list of presets per vedere quale (i) si adatta meglio a te.
{
"presets": ["es2015"]
}
aggiungere uno script build
al vostro package.json
. Qui di seguito è src
i file di input e build
è il file di output
"scripts": {
"build": "babel src -d build"
}
Poi costruirlo trasformato!
$ npm run build
Quindi eseguire il codice. A questo punto, ti consigliamo di essere in esecuzione i file nella directory build
$ npm start
per Babel < = 5, basta usare il gancio richiedono.
require("babel/register");
All subsequent files required by node with the extensions .es6, .es, .jsx and .js will be transformed by Babel. The polyfill is also automatically required.
Sarete in grado di mantenere i file sorgente in ES6 ma ancora eseguirli utilizzando node server.js
Secondo i vostri commenti, ti sembra di essere visto un po 'di problemi. Prestare particolare attenzione alla parte evidenziata in giallo sopra. Il tuo primo file può essere solo ES5, che viene eseguito dal nodo stesso.Tutti successiva richiede sarà trasformato da Babel ...
Ecco cosa una tipica configurazione potrebbe apparire come
server.js
// only ES5 is allowed in this file
require("babel/register");
// other babel configuration, if necessary
// load your app
var app = require("./app.js");
app.js
// this file will be loaded through babel
// you can now use ES6 here and in every other include
abete e così su!
$ node server.js
In realtà ho appena provato questo, mettendo 'require (" babel/register ");' nel mio server.js e quando eseguo 'node server.js' ottengo l'errore:' Parola riservata inaspettata: import ... 'così non sembra funzionare –
@steveniseki il mio aggiornamento dovrebbe dimostrare come far funzionare le cose. – naomik
Fantastico, grazie mille per questo, in realtà ho pensato che sarebbe stato il caso e ho provato a fare il mio server.js tutto in ES5 ma non sembrava funzionare, comunque questa soluzione è in realtà molto più bella spingendo l'app su un'app. js, e ha funzionato perfettamente. Grazie –