Минимизировать всю директорию, сохраняя элементы/стиль/Script Отношения?

Существуют ли какие-либо решения, которые могут минимизировать всю директорию проекта? Что еще более важно, существуют ли какие-либо решения, которые могут сократить имена классов, идентификаторы и сохранить их согласованными во всех документах?

Что-то, что может это сделать:

Index.html ---

<div class="fooBar">
  <!-- Code -->
</div>

Styles.css ---

.fooBar { 
  // Comments and Messages
  background-color: #000000; 
}

Index.js ---

$(".fooBar").click( function () { 
  /* More Comments */
  alert( "fooBar" ); 
});

В это:

Index.html ---

<div class="a"></div>

Styles.css ---

.a{background-color:#000;}

Index.js ---

$(".a").click(function(){alert("fooBar");});

Ответы

Ответ 1

То, что вы ищете, - это не минимизация, а сжатие. Минимизация по определению удаляет только пробелы, поскольку идентификаторы сокращения изменяют интерфейс, что потенциально нарушает внешние скрипты, которые зависят от него. По этой причине минимизация по своей сути "более безопасна", чем сжатие, хотя в закрытой системе (т.е. Инкапсулированное веб-приложение) сжатие может быть хорошей идеей.

Для Javascript большинство людей используют YUI Compressor или Упаковщик Dean Edwards.

Для CSS существует множество инструментов для "оптимизации" стилей, но я не знаю никого, что сокращает имена классов. Причины этого могут быть несколько:

  • Чтобы сжать файл CSS, script должен знать все HTML файлы, которые его включают, чтобы изменить ссылки на класс и идентификатор внутри них. В зависимости от размера и структуры вашего веб-сайта, он может быть нетривиальным.
  • После сжатия семантический HTML становится менее читаемым, поскольку <span class="image_caption"> превращается в <span class="a12"> или, что еще хуже, <p id="a12">.

Было бы возможно сделать что-то вроде того, что вы описываете (и я действительно работаю над личным CMS/фреймворком, который будет), но для того, чтобы он мог быть удобным, он, вероятно, должен был стать неотъемлемой частью тесно структурированную CMS, сжимающую все файлы "за кулисами" всякий раз, когда публикуется новое изменение, сохраняя все исходные файлы, чтобы сайт мог поддерживаться в целом.

Ответ 2

Я использую http://www.w3compiler.com/, который выполняет сжатие и обфускацию

Ответ 3

Я использую YUICompressor для минимизации моих файлов css и js и программу под названием replace, чтобы выполнить пользовательскую замену строк в html (удаление комментариев, замена локальной jquery lib на google api и т.д.).

Используйте командный файл для вызова программы во всех файлах с определенным расширением в каталоге проекта, например:

java -jar yuicompressor-2.4.2.jar -o temp\css\one-compressed.css temp\css\one.css
replace -quotes \q -srcdir temp\ -fname "*.php" -find "<script type=\qtext/javascript\q src=\qjs/jquery.js\q></script>" -replace "<script src=\qhttp://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js\q type=\qtext/javascript\q></script>"

и т.д.

До сих пор я не смог найти хороший инструмент для обфускации. Но эти два человека делают задачу миниатюризации и сжатия автоматизированной и намного проще.