Como minimizar arquivos CSS e JS usando UglifyJS e UglifyCSS
Para reduzir arquivos CSS e JavaScript (JS) usando a linha de comando do Linux, você pode utilizar duas ferramentas populares: UglifyJS para JavaScript e UglifyCSS para CSS.
Minificação é um processo que ajuda a reduzir o tamanho dos arquivos, removendo caracteres desnecessários do código-fonte, como espaços, tabulações, quebras de linha e comentários, sem alterar sua funcionalidade e pode melhorar o tempo de carregamento de aplicativos da web.
Este artigo irá guiá-lo através do processo de redução de arquivos CSS e arquivos JS usando a interface de linha de comando (CLI) do Linux com UglifyJS e Ferramentas UglifyCSS.
Etapa 1: Instalando Node.js e NPM no Linux
Antes de começar, certifique-se de ter Node.js e npm (Node Package Manager) instalados em seu sistema Linux.
node -v
npm -v
Se eles não estiverem instalados, você poderá instalá-los em distribuições baseadas em Debian usando os seguintes comandos.
sudo apt update
sudo apt install nodejs npm -y
Em distribuições baseadas em RHEL, você pode usar:
sudo dnf update
sudo dnf install nodejs npm -y
Etapa 2: Instalando UglifyJS e UglifyCSS
Depois que Node.js e npm estiverem instalados, você poderá usá-los para instalar UglifyJS e UglifyCSS, que são npm pacotes usados para reduzir arquivos JavaScript e CSS, respectivamente.
sudo npm install -g uglify-js
sudo npm install -g uglifycss
Após a instalação, verifique se UglifyJS e UglifyCSS estão instalados corretamente executando:
uglifyjs -V
uglifycss -V
Etapa 3: Minimizando arquivos JavaScript e CSS
Para minificar um arquivo JavaScript ou CSS, navegue até o diretório que contém o arquivo que você deseja minificar executando:
uglifyjs yourfile.js -o yourfile.min.js
uglifycss yourfile.css > yourfile.min.css
Para reduzir vários arquivos CSS e JS em um diretório, você pode usar um script bash simples que pode melhorar significativamente o desempenho do seu site, reduzindo o tamanho dos arquivos.
Minimizando vários arquivos JavaScript
Crie um script Bash para reduzir todos os arquivos JS.
nano minify_js.sh
Adicione o script a seguir ao arquivo minify_js.sh
.
#!/bin/bash
for file in *.js; do
if [ "$file" != "${file%.min.js}" ]; then
echo "Skipping minified file: $file"
continue
fi
uglifyjs "$file" -o "${file%.js}.min.js" --compress --mangle
echo "Minified $file to ${file%.js}.min.js"
done
Torne o script executável e execute-o.
chmod +x minify_js.sh
./minify_js.sh
Este script percorrerá todos os arquivos .js
no diretório, minificará-os usando UglifyJS e criará novos arquivos com a extensão .min.js
.
Se não quiser criar novos arquivos, você pode usar a opção -o
no script bash para substituir os arquivos originais.
#!/bin/bash
for file in *.js; do
if [ "$file" != "${file%.min.js}" ]; then
echo "Skipping already minified file: $file"
continue
fi
uglifyjs "$file" --compress --mangle -o "$file"
echo "Minified $file"
done
Minimizando vários arquivos CSS
Da mesma forma, para reduzir todos os arquivos CSS em um diretório, crie um script Bash.
nano minify_css.sh
Adicione o seguinte script ao arquivo minify_css.sh
:
#!/bin/bash
for file in *.css; do
if [ "$file" != "${file%.min.css}" ]; then
echo "Skipping minified file: $file"
continue
fi
uglifycss "$file" > "${file%.css}.min.css"
echo "Minified $file to ${file%.css}.min.css"
done
Torne o script executável e execute-o.
chmod +x minify_css.sh
./minify_css.sh
Este script percorrerá todos os arquivos .css
no diretório, minificará-os usando UglifyCSS e criará novos arquivos com a extensão .min.css .
Se não quiser criar novos arquivos, você pode usar o seguinte script bash para substituir os arquivos originais.
#!/bin/bash
for file in *.css; do
if [ "$file" != "${file%.min.css}" ]; then
echo "Skipping already minified file: $file"
continue
fi
uglifycss "$file" > temp.css
mv temp.css "$file"
echo "Minified $file"
done
Conclusão
Minimizar seus arquivos CSS e JS é um processo simples usando UglifyJS e UglifyCSS na CLI do Linux. Isso não apenas reduz o tamanho dos arquivos, mas também ajuda a melhorar o tempo de carregamento de suas páginas da web.