Ferramenta Minify que pode ser executada através do terminal


35

Eu estou procurando uma ferramenta ou uma maneira de apoucar (semelhante ao Compress meu código e esta questão no Stack) todo o código em meus .xml, .css, .htmle .jsarquivos através de Ubuntu do terminal. Eventualmente, bash o script do processo, mas no momento eu gostaria de encontrar algo para testar. Existe uma ferramenta que eu possa usar para compactar todos esses formatos de arquivo através do terminal?


2
Você já tentou algo parecido tar -czvf compressed.tar.gz *.xml *.css *.html *.php?
roadmr

1
Eu estou olhando para comprimir o código em si. Algo como CSS Minify
D --Vᴀᴅᴇʀ

1
Então acho que você não está pedindo compactação . Por compactação em arquivos regulares (que não são mídias, como músicas / vídeos), consideramos principalmente a compactação sem perdas, mas você está procurando uma maneira de minimizar o espaço em branco (no qual você perde esses dados). E como minificar é com perdas, você não pode descomprimir (porque não é reversível). Para mim, isso torna "claro o que você está perguntando".
gertvdijk

Respostas:


43

Esta não é a melhor opção, mas é provavelmente a mais fácil. O compressor YUI foi considerado o melhor compressor para Javascript e CSS, oferecendo melhorias de 20 a 40% em relação a outros minificadores.

Desde então, ele foi substituído por projetos mais recentes, como o Uglify.JS (que Grunt provavelmente sugerirá), mas ainda é uma coisa bastante fácil de instalar e executar no Ubuntu.

sudo apt-get install yui-compressor

É isso aí. Agora você pode executar yui-compressor myfile.jse ele fará sua mágica, apenas não tão bem, ou tão convenientemente quanto uma pilha Node / Grunt / Uglify + YUI instalada corretamente.


15
Nem todo mundo que usa js ou css está usando node.js ou executando projetos node.js. É mais uma estrutura para aprender e configurar se você deseja usar o grunhido. Sim, grunhido é legal. Mas hoje em dia, já temos o suficiente para aprender antes mesmo de começarmos a codificar. Portanto, o nó / grunhido nem sempre é conveniente. :) Eu mesmo vou tentar a sua sugestão de compressor yui.
Bill Rosmus

2
@BillR Eu meio que concordo com o sentimento, mas apesar de não ter nenhum projeto node.js., ainda uso coisas como lessc e uglify.js porque são as melhores ferramentas para o trabalho . Não uso o Grunt porque o substituí por minhas próprias ferramentas, mas para o trabalho real, nunca me atrapalhei apenas para evitar o Node. Se você deseja permanecer no setor, precisa acompanhar as melhores práticas.
Oli

Você está assumindo que usar o nó é uma prática recomendada. Talvez no seu mundo, que não é o mundo de todos.
Bill Rosmus

2
Você tem cinco anos comigo, mas eu não sei qual é o seu ponto ... Você ainda está usando HTML4 estático com um pouco de "DHTML" e scripts CGI perl? Ainda está usando ASP? Ou você mudou as coisas à medida que as melhores tecnologias se tornaram disponíveis? Temos dois pontos separados acontecendo nisso; está ficando um pouco bobo. Não ligo se você não gosta de reciclagem, mas lembro que o uso do more-csspacote NPM para reduzir seu CSS é mais intrusivo do que o yui-compressor. Não é. É apenas outro comando que faz a mesma coisa melhor.
Oli

1
Note que, com esta instalação, você instalará também o openjkd, algo que alguém não gostaria no sistema.
reallynice

12

Você pode minificar js facilmente com o node e uglify-js na linha de comando:

  • instale o uglify-js com npm install uglify-js -g

  • executá-lo uglifyjs app-test.js > app-test.min.js


Para css, sugiro o uso de exemplo clean-css (provavelmente o mais estável css minifier no npm)
:

cleancss -o public-min.css public.css

No que diz respeito ao html, geralmente a minificação geralmente não vale o tempo que você investe na configuração, mas eu tentei o html-minifier e é uma ferramenta incrível.

Faça o que fizer, certifique-se de compactar o que está servindo.


1
uglify pode ser instalado diretamente comsudo apt-get install node-uglify
Gery

Observe que o uglify-js é apenas para Javascript, e não para css ou outros arquivos.
Jose Gómez

2
@ Gery se você deseja instalar uglifycom aptvocê também precisa instalar node-legacy, então executesudo apt install node-uglify node-legacy
mxdsp

Observe que a cleancssferramenta CLI está agora no clean-css-clipacote.
jbg

7

Use minify - diferente das outras sugestões, esta ferramenta reduz muito mais tipos de arquivos:

CSS     text/css
HTM     text/html
HTML    text/html
JS      text/javascript
JSON    application/json
SVG     image/svg+xml
XML     text/xml

Ele faz um trabalho muito ruim com javascript.
Federico

2

Não há motivo para minificar arquivos php (exceto que você tem muito pouco espaço em disco e deseja usar cada parte dele).

Se você pudesse adicionar uma meta (O que você deseja alcançar e por quê?), Alguém poderá lhe mostrar um caminho melhor.

Os arquivos JS e CSS são minificados no tempo de execução e armazenados em cache na maioria dos projetos da web. Existe o minify ( https://github.com/mrclay/minify ), uma "biblioteca" php capaz de fazer exatamente isso. (também pode ser executado com php do terminal)

Mas lembre-se de que um grande arquivo javascript não é carregado com mais rapidez que cinco arquivos pequenos. Se você precisar de um motivo e uma solução para esta declaração, consulte http://headjs.com/

Que a fonte esteja com você ...


1

Eu recomendaria o uso do Grunt.js . É uma ferramenta de automação que possui minificadores disponíveis como plugins e pode ser executada em seu terminal via Node.js. Não deve ser necessário reduzir o PHP, pois o código é executado no lado do servidor e apenas sua saída HTML é enviada ao cliente.

Você pode encontrar plugins disponíveis aqui


2
Esteja ciente de que escolher Grunt implica uma curva de aprendizado.
Rick-777

1

Eu tive bons resultados com o Closure Compiler .

O Closure Compiler é uma ferramenta para tornar o download e a execução do JavaScript mais rápidos. Em vez de compilar de um idioma de origem para o código da máquina, ele compila do JavaScript para melhorar o JavaScript. Ele analisa seu JavaScript, analisa, remove código morto e reescreve e minimiza o que resta. Ele também verifica a sintaxe, as referências e os tipos de variáveis ​​e alerta sobre as armadilhas comuns do JavaScript.

É desenvolvido pelo Google e escrito em Java. É empacotado para sistemas baseados no Debian closure-compilere é facilmente instalado nos sistemas Ubuntu. Como não usa uma GUI, requer o default-jre-headlesspacote mais leve .

É mais lento que o compressor YUI, mas o tamanho do arquivo resultante é (ligeiramente) menor. Também imprime mensagens de aviso úteis, semelhantes aos compiladores para outras linguagens de programação.

Documentação: Introdução

Uso:

closure-compiler --js input.js --js_output_file output.js

O fechamento é realmente bom se você iniciar seu projeto com ele e estender seus objetos em arquivos separados, etc. Mas, para um projeto existente, é bastante terrível.
Alexis Wilke

-1

Outra opção é usar o npxcomando do Node.js. npxexecuta um comando de um pacote Node.js. sem instalá-lo explicitamente.

# Minify JS
npx -p uglify-js uglifyjs -o app.min.js app.js common.js

# Minify CSS
npx clean-css-cli -o style.min.css css/bootstrap.css style.css

# Minify HTML
npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace

# XML
npx pretty-data-cli --type xml --minify input.xml > input.min.xml
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.