O arquivo Babel é copiado sem ser transformado

Eu tenho esse código:

"use strict"; import browserSync from "browser-sync"; import httpProxy from "http-proxy"; let proxy = httpProxy.createProxyServer({}); 

e eu instalei o babel-core e o babel-cli globalmente via npm. O ponto é quando tento compilar com isso no meu terminal:

 babel proxy.js --out-file proxified.js 

O arquivo de saída é copiado em vez de compilado (quero dizer, é o mesmo que o arquivo de origem).

O que estou perdendo aqui?

Babel é um framework de transformação. Pré-6.x, ele habilitou certas transformações por padrão, mas com o aumento do uso de versões do Node que suportam nativamente muitos resources do ES6, tornou-se muito mais importante que as coisas sejam configuráveis. Por padrão, o Babel 6.x não realiza nenhuma transformação. Você precisa dizer quais transformações executar:

 npm install babel-preset-env 

e corra

 babel --presets env proxy.js --out-file proxified.js 

ou crie um arquivo .babelrc contendo

 { "presets": [ "env" ] } 

e executá-lo como você era antes.

env , neste caso, é uma predefinição que basicamente diz para compilar todo o comportamento padrão do ES * para o ES5. Se você estiver usando versões do Node que suportam algum ES6, talvez queira considerar fazer

 { "presets": [ ["env", { "targets": { "node": "true" } }], ] } 

para dizer ao preset para processar apenas coisas que não são suportadas pela sua versão do Node. Você também pode include versões de navegador em seus destinos se precisar de suporte ao navegador.

Eu tive o mesmo problema com uma causa diferente:

O código que eu estava tentando carregar não estava sob o diretório do pacote, e o Babel não tem o padrão de transpilar fora do diretório do pacote.

Eu resolvi isso movendo o código importado, mas talvez eu também pudesse ter usado alguma declaração de inclusão na configuração do Babel.

Primeiro, assegure-se de ter os seguintes node modules :

npm i -D webpack babel-core babel-preset-es2015 babel-preset-stage-2 babel-loader

Em seguida, adicione isso ao seu arquivo de configuração do webpack.config.js ( webpack.config.js ):

 // webpack.config.js ... module : { loaders : [ { test : /\.js$/, loader : 'babel', exclude : /node_modules/, options : { presets : [ 'es2015', 'stage-2' ] // stage-2 if required } } ] } ... 

Referências:

Boa sorte!

 npm install --save-dev babel-preset-node5 npm install --save-dev babel-preset-react 

… e, em seguida, criando um .babelrc com as predefinições:

 { "presets": [ "node5", "react" ] } 

… resolveu um problema muito parecido para mim, com o babel 3.8.6 e o nó v5.10.1

https://www.npmjs.com/package/babel-preset-node5
https://www.npmjs.com/package/babel-preset-react

Mesmo erro, causa diferente:

Transpilar tinha funcionado antes e depois parou de funcionar, com arquivos simplesmente sendo copiados como estão.

Acontece que eu abri o .babelrc em algum momento e o Windows decidiu append .txt ao nome do arquivo. Agora que o .babelrc.txt não foi reconhecido pelo babel. A remoção do sufixo .txt corrigiu isso.

corrija seu .babelrc

 { "presets": [ "react", "ES2015" ] } 

No ano de 2018:

Instale os seguintes pacotes se ainda não tiver:

 npm install babel-loader babel-preset-react 

webpack.config.js

 { test: /\.jsx?$/, exclude: /node_modules/, use: [ { loader: 'babel-loader', options: { presets: ['es2015','react'] // <--- !`react` must be part of presets! } } ], }