Мінімізуйте інструмент, який можна виконати через термінал


35

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


2
Ви пробували щось подібне tar -czvf compressed.tar.gz *.xml *.css *.html *.php?
roadmr

1
Я шукаю стиснути сам код. Щось на кшталт CSS
Minify

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. Так бурчання - це круто. Але зараз у нас вже достатньо навчитися, перш ніж ми можемо почати кодування. Тож вузол / бурчання не завжди зручно. :) Я сам спробую спробувати вашу пропозицію юй-компресора.
Білл Росмус

2
@BillR Я якось погоджуюся з настроями, але, хоча у мене немає жодного проекту node.js, я все ще використовую такі речі, як lessc і uglify.js, оскільки вони є найкращими інструментами для роботи . Я не використовую Grunt, тому що замінив його власним інструментом, але для фактичної роботи я ніколи не бився, щоб уникнути Node. Якщо ви хочете залишатись у цій галузі, ви повинні бути в курсі кращих практик.
Олі

Ви робите припущення, що використання вузла - найкраща практика. Можливо, у вашому світі, який не у світі.
Білл Росмус

2
У вас п’ять років на мене, але я не знаю, у чому ваша думка ... Ви все ще використовуєте статичний HTML4 з трохи "DHTML" та Perl CGI-скриптами? Ще використовуєте ASP? Або ви переключили речі, як кращі технології зробили себе доступними? У нас є два окремі моменти в цьому; стає трохи нерозумно. Мені все одно, якщо вам не подобається перекваліфікація, але мені все одно, що ви робите, що використання more-cssпакету NPM для мінімізації вашого CSS є більш нав'язливим, ніж використання юй-компресора. Це не так. Це просто інша команда, яка робить те ж саме краще.
Олі

1
Зауважте, що при цій інсталяції ви збираєтесь встановити також openjkd - річ, яку хтось не захоче в системі.
realnice

12

Ви можете легко змінити js за допомогою вузла та 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 і це дивовижний інструмент.

Що б ви не робили, будьте впевнені, що ви отримуєте те, що вам служить.


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/

Нехай джерело буде з вами ...


1

Я рекомендую використовувати Grunt.js . Це інструмент автоматизації, який має міні-фільтри, доступні як плагіни, і їх можна запускати у ваш термінал через Node.js. Потрібно не змінювати PHP, оскільки код виконується на стороні сервера, і клієнту надсилається лише його вихід HTML.

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


2
Майте на увазі, що вибір Грунта передбачає криву навчання.
Rick-777

1

Я мав непогані результати із компілятором закриття .

Компілятор закриття - це інструмент для швидшого завантаження та запуску 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.