Para o código do lado do cliente , você está fazendo a coisa certa. babelify
e envie para o cliente.
Para o código do lado do servidor , eu faria apenas uma compilação regular usando babel-cli
De acordo com http://babeljs.io/docs/setup/#babel_register , babel-register
é não significava para uso em produção - O necessitam de gancho é recomendado principalmente para casos simples.
para Babel 6+
A partir do Babel 6, nenhuma transformação é incluída por padrão. Portanto, vamos começar instalando babel-cli
e babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Adicione uma transformação ao seu .babelrc
arquivo - este é o módulo perst que baixamos acima. Dê uma olhada na lista completa de predefinições para ver quais são mais adequadas para você.
{
"presets": ["es2015"]
}
Adicione um build
script ao seu package.json
. Abaixo src
estão seus arquivos de entrada e build
os arquivos de saída transformados
"scripts": {
"build": "babel src -d build"
}
Então construa!
$ npm run build
Em seguida, execute seu código. Neste ponto, você deseja executar os arquivos em seu build
diretório
$ npm start
para Babel <= 5, basta usar o gancho require.
require("babel/register");
Todos os arquivos subsequentes exigidos pelo nó com as extensões .es6 , .es , .jsx e .js serão transformados pelo Babel. O polyfill também é necessário automaticamente.
Você será capaz de manter seus arquivos de origem no ES6, mas ainda executá-los usando node server.js
De acordo com seus comentários, você parece estar tendo alguns problemas. Preste atenção especial à parte destacada em amarelo acima. Seu primeiro arquivo só pode ser ES5, que é executado pelo próprio nó. Todos os requisitos subsequentes serão transformados por Babel ...
Esta é a aparência de uma configuração típica
server.js
require("babel/register");
var app = require("./app.js");
app.js
Queime isso!
$ node server.js
require("babel/register");
meu server.js e quando eu executonode server.js
obtenho o erro:Unexpected reserved word: import ...
então não pareceu funcionar