Инструмент Minify, который может быть выполнен через терминал

35

Я ищу инструмент или способ Минимизировать (аналогично Сжать мой код , и этот вопрос на Stack) все кода в моих .xml, .css, .htmlи .jsфайлы через Ubuntu терминалом. В конце концов, я запишу сценарий процесса, но сейчас я бы хотел найти что-то для тестирования. Есть ли инструмент, который я могу использовать для сжатия всех этих форматов файлов через терминал?

DᴀʀᴛʜVᴀᴅᴇʀ
источник
2
Вы пробовали что-то подобное tar -czvf compressed.tar.gz *.xml *.css *.html *.php?
roadmr
1
Я ищу, чтобы сжать сам код. Что-то вроде CSS Minify
DᴀʀᴛʜVᴀᴅᴇʀ
1
Тогда я думаю, что вы не требуете сжатия . При сжатии обычных файлов (не носителей, таких как музыка / видео) мы в основном рассматриваем только сжатие без потерь, но вы ищете способ минимизировать пустое пространство (при котором вы теряете эти данные). И поскольку минимизация с потерями, вы не можете распаковать (потому что это не обратимо). Для меня это делает "неясно, что вы спрашиваете".
gertvdijk

Ответы:

43

Это не лучший вариант, но, вероятно, самый простой. Компрессор YUI долгое время считался лучшим компрессором для Javascript и CSS, предлагая улучшения на 20-40% по сравнению с другими минифайерами.

С тех пор он был заменен более новыми проектами, такими как Uglify.JS (что, вероятно, предложит Grunt), но в Ubuntu все еще довольно легко начать работу.

sudo apt-get install yui-compressor

Вот и все. Теперь вы можете запустить, yui-compressor myfile.jsи он сделает свое дело, просто не так хорошо, или так же удобно, как правильно установленный стек Node / Grunt / Uglify + YUI.

Оли
источник
15
Не все, кто использует js или css, используют node.js или проекты node.js. Это еще один фреймворк для изучения и настройки, если вы хотите использовать grunt. Да, хрюкать это круто. Но сейчас у нас уже есть достаточно, чтобы научиться, прежде чем мы сможем даже начать писать код. Так что узел / ворчание не всегда удобно. :) Я сам собираюсь попробовать ваше предложение по yui-компрессору.
Билл Росмус
2
@BillR Я вроде согласен с мнением, но хотя у меня нет проектов node.js, я все еще использую такие вещи, как lessc и uglify.js, потому что они являются лучшими инструментами для этой работы . Я не использую Grunt, потому что я заменил его на свой собственный инструмент, но для реальной работы я никогда не стану хромать, просто чтобы избежать Node. Если вы хотите остаться в отрасли, вы должны идти в ногу с лучшими практиками.
Оли
Вы делаете предположение, что использование узла - лучшая практика. Может быть, в вашем мире, который не каждый мир.
Билл Росмус
2
У вас есть пять лет на меня, но я не знаю, в чем ваша цель ... Вы все еще используете статический HTML4 с небольшим количеством сценариев "DHTML" и Perl CGI? Все еще используете ASP? Или вы изменили положение вещей, поскольку лучшие технологии сделали себя доступными? У нас есть два отдельных момента, происходящих в этом; становится немного глупо Мне все равно, если вам не нравится переподготовка, но мне важно, чтобы вы понимали, что использование more-cssпакета NPM для минимизации вашего CSS является более навязчивым, чем использование yui-компрессора. Это не так. Это просто еще одна команда, которая делает то же самое лучше.
Оли
1
Обратите внимание, что с этой установкой вы собираетесь установить также openjkd, то, что кому-то не нужно в системе.
действительно
12

Вы можете легко минимизировать js с помощью node и uglify-js из командной строки:

  • установить uglify-js с npm install uglify-js -g

  • запустить его uglifyjs app-test.js > app-test.min.js


Для css я бы предложил использовать пример использования clean-css (вероятно, самый стабильный минификатор css на npm)
:

cleancss -o public-min.css public.css

Что касается html, то обычно минификация не стоит того времени, которое вы вкладываете в ее настройку, но я попробовал html-minifier и это отличный инструмент.

Что бы вы ни делали, просто будьте уверены, что вы gzip то, что вы служите.

user2417031
источник
1
uglify может быть установлен непосредственно сsudo apt-get install node-uglify
Gery
Обратите внимание, что uglify-js предназначен только для Javascript, а не для CSS или других файлов.
Хосе Гомес
2
@Gery, если вы хотите установить uglifyс aptвами также необходимо установить node-legacy, так что запуститеsudo apt install node-uglify node-legacy
mxdsp
Обратите внимание, что cleancssинструмент CLI теперь находится в clean-css-cliпакете.
JBG
7

Используйте minify - в отличие от других предложений, этот инструмент уменьшает намного больше типов файлов:

CSS     text/css
HTM     text/html
HTML    text/html
JS      text/javascript
JSON    application/json
SVG     image/svg+xml
XML     text/xml
Деннис
источник
Это очень плохо работает с JavaScript.
Федерико
2

Нет причин минимизировать php-файлы (за исключением того, что у вас очень ограниченное дисковое пространство и вы хотите использовать каждый его бит).

Если бы вы могли добавить цель (чего вы хотите достичь и почему?), Кто-то может показать вам лучший способ.

Файлы JS и CSS минимизируются во время выполнения и кэшируются в большинстве веб-проектов. Существует minify ( https://github.com/mrclay/minify ), php «библиотека», которая способна сделать именно это. (также может быть выполнен с помощью php из терминала)

Но имейте в виду, что один большой файл JavaScript не обязательно загружается быстрее, чем 5 маленьких файлов. Если вам нужна причина и решение для этого утверждения, посмотрите на http://headjs.com/

Пусть источник будет с вами ...

mondjunge
источник
1

Я бы порекомендовал использовать Grunt.js . Это инструмент автоматизации, который имеет минифайеры в виде плагинов и может быть запущен на вашем терминале через Node.js. Не должно быть необходимости минимизировать PHP, так как код выполняется на стороне сервера, и только его HTML-вывод отправляется клиенту.

Вы можете найти доступные плагины здесь

konapun
источник
2
Имейте в виду, что выбор Grunt подразумевает кривую обучения.
Рик-777
1

У меня были хорошие результаты с Closure Compiler .

Closure Compiler - инструмент для ускорения загрузки и работы JavaScript. Вместо компиляции из исходного языка в машинный код, он компилирует из JavaScript в лучший JavaScript. Он анализирует ваш JavaScript, анализирует его, удаляет мертвый код, переписывает и минимизирует то, что осталось. Он также проверяет синтаксис, ссылки на переменные и типы и предупреждает о распространенных ошибках JavaScript.

Он разработан Google и написан на Java. Он упакован для систем на основе Debian closure-compilerи легко устанавливается в системах Ubuntu. Поскольку он не использует графический интерфейс, он требует более легкого default-jre-headlessпакета.

Это медленнее, чем YUI-компрессор, но полученный размер файла (немного) меньше. Он также печатает полезные предупреждающие сообщения, похожие на компиляторы для других языков программирования.

Документация: Начало работы

Использование:

closure-compiler --js input.js --js_output_file output.js
Энтони Дж - справедливость для Моники
источник
Закрытие действительно хорошо, если вы начинаете свой проект с него и расширяете свои объекты в отдельные файлы и т. Д. Но для существующего проекта это довольно ужасно.
Алексис Вилке
-1

Другой вариант - использовать npxкоманду из Node.js. npxзапускает команду пакета Node.js без явной установки.

# 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
Нин Фам
источник