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?

DᴀʀᴛʜVᴀᴅᴇʀ
fonte
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.

Oli
fonte
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.

user2417031
fonte
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
Dennis
fonte
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ê ...

mondjunge
fonte
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

konapun
fonte
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
Anthony G - justiça para Monica
fonte
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
Ninh Pham
fonte