Para o código do lado do cliente , você está fazendo a coisa certa. babelifye 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-clie babel-preset-es2015.
$ npm install --save-dev babel-cli babel-preset-es2015
Adicione uma transformação ao seu .babelrcarquivo - 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 buildscript ao seu package.json. Abaixo srcestão seus arquivos de entrada e buildos 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 builddiretó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.jsobtenho o erro:Unexpected reserved word: import ...então não pareceu funcionar