3
respostas

Uglify e babel

Retornando a essa questão, eu entendi que, no cenário do projeto em questão, o babel está gerando código para ES2017 (ES8), pois é o que está configurado como target no arquivo .babelrc.

Então, certamente deve haver uma forma (embora eu não conheça) de fazer com que o babel faça a transpilação para um padrão mais antigo (ES5, por exemplo), o que permitiria o uso do uglify "embutido" do webpack.

E pode ser que hoje em dia (estamos em 2019), essa discussão não faça mais sentido, talvez com versões mais novas do babel e do webpack. Mas, como estou aprendendo, também não sei dizer...

3 respostas

Fala ai Gustavo, tudo bem? Na verdade é ao contrário, o Babel é um transpilador de código moderno para código antigo.

Então a gente vai escrever códigos ES6, ES7, ES8, ES9, ES10, etc... E o Babel irá gerar o código mais antigo para a gente, assim os browsers vão conseguir entendê-lo.

Espero ter ajudado.

Bom, está claro para mim que o Babel faz isso: "transpilar" de um código mais moderno para um código mais antigo.

A questão que eu coloquei tem a ver com o seguinte: nessa aula, o instrutor diz que o Uglify embutido no webpack não funciona porque não tem compatibilidade com ES8; a configuração do Babel nesse projeto indica que ele gere código no padrão ES8.

Então, a observação que faço é a seguinte: se for possível configurar o Babel para gerar código em um padrão mais antigo (ES5, por exemplo), então o Uglify conseguiria trabalhar sobre essa código (já transpilado).

Poderíamos ter um cenário mais ou menos assim:

[ Código original (ES9) ] ---> Babel --> [ Código transpilado (ES5) ] --> "Core" do webpack --> [ Bundle (ES5) ] --> Uglify --> [ Bundle minificado (ES5) ]

Então, eu entendi o papel de cada coisa. A questão é: em vez de "abandonar" o Uglify embutido no webpack, uma alternativa não seria justamente fazer com que o Babel transpilasse para um formato compatível com ele (no caso, ES5)?

A minificação dos arquivos .js podem ser feitas de N maneiras, não necessariamente através apenas do Uglify.

Veja algumas alternativas:

Normalmente o mais utilizado é o Terser.

Respondendo a pergunta:

uma alternativa não seria justamente fazer com que o Babel transpilasse para um formato compatível com ele (no caso, ES5)?

Sim, é uma possível solução, mas, o Uglify é um pouco antigo e meio que ficou para trás.

Seu uso hoje em dia é bem menor do que antigamente, visto que surgiram outras bibliotecas mais novas.

Espero ter ajudado.