4
respostas

Uglify e babel

Eu não entendi porque o uglify não funciona com ES6+. O babel não serve justamente para transpilar o código para ser compatível com ES5? Sendo assim o uglify não deveria ter problemas em rodar.

4 respostas

Fala aí Alexandre, você está tendo erro no Uglify? Poderia postar o erro completo? Ficaria mais fácil entender o problema e tentar ajudar.

Oi Matheus. Na verdade não estou tendo esse erro agora.

O que me referia era que o professor demonstrou em aula que o uglify não funciona com ES6+ pois não reconhece a sintaxe.

Mas no projeto do curso, o babel também está sendo utilizado. O babel serve justamete para transpilar código ES6+ para ES5.

Portanto, o uglify não deveria ter problemas em rodar depois que o código é transpilado para ES5. Mas mesmo assim não funciona.

Queria entender porque isso acontece

Oi Alexandre, O uglify nao funciona com ES6 mesmo, como você pode olhar na documentação

https://github.com/mishoo/UglifyJS2#readme

O que ocorre é que o Babel converte de ES6 para ES5 e o UglifyJS minifica o JS gerado. Ele que vai trocar o nome dos métodos e variáveis para algo que somente o webpack vai entender.

Então Alexandre, a função do Babel é justamente transpilar um código novo, para um código antigo, dessa maneira conseguimos garantir uma maior compatibilidade.

Se você tentar aplicar o Uglify diretamente no código de desenvolvimento, no caso ES6+, ele não irá funcionar, pois não conhece as sintaxes do mesmo.

Para isso, você pode aplicar uma transpilação do Babel e pedir para o Uglify rodar em cima desse código transpilado, dessa maneira, será um código que ele entende (na maioria das vezes).

Pode ser que um código ou outro ele também chegue a não entender, mas, na maioria das vezes ele conseguirá fazer um check do mesmo.

Espero ter ajudado.