Выделил style.css — получил минифицированный style.min.css рядом. Для каждого .css просто запускаю сценарий и всё готово. Так минифицирую стили для продакшена: cleancss ужимает файл, страницы грузятся быстрее.
Куда положить
Можно просто скачать скрипт Nautilus ниже и положить по этому пути. Скрипты Nautilus живут здесь:
~/.local/share/nautilus/scripts/
Этот файл — ~/.local/share/nautilus/scripts/Минифицировать CSS. В свойствах включаю «Исполняемый как приложение» — без этого пункта в меню не будет.
Или через командную строку
- Ставлю зависимости
Скрипт проверяет команду cleancss и пользуется zenity для ошибок и отчёта.
sudo apt install -y zenity cleancss - Создаю файл
Имя файла — то, что будет в меню: Минифицировать CSS.
mkdir -p ~/.local/share/nautilus/scripts touch ~/.local/share/nautilus/scripts/"Минифицировать CSS" - Даю права на исполнение
Без прав на исполнение Nautilus скрипт не покажет.
chmod +x ~/.local/share/nautilus/scripts/"Минифицировать CSS" - Открываю в редакторе
xdg-open поднимает графический редактор, не nano.
xdg-open ~/.local/share/nautilus/scripts/"Минифицировать CSS" - Вставляю код и пользуюсь
Вставляю код ниже и пользуюсь: выделил файлы → ПКМ → «Сценарии». Чтобы меню подхватило файл:
nautilus -q
Код
#!/bin/bash
readonly SCRIPT_TITLE="Минифицировать CSS"
declare -i converted=0 skipped=0 failed=0
report_lines=()
require_cleancss() {
if command -v cleancss >/dev/null 2>&1; then
return 0
fi
zenity --error --no-wrap
--title="$SCRIPT_TITLE"
--text="Нужен cleancss.nnУстановите:nsudo apt install cleancss"
exit 1
}
gather_selection() {
local -n _out=$1
if [ -n "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS:-}" ]; then
IFS=$'n' read -d '' -r -a _out < <(printf '%sn' "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
return
fi
if [ "$#" -gt 0 ]; then
_out=("$@")
return
fi
zenity --error --no-wrap --title="$SCRIPT_TITLE" --text="Сначала выделите CSS-файлы."
exit 1
}
is_css_file() {
local path="$1"
local ext="${path##*.}"
local ext_lower="${ext,,}"
[ "$ext_lower" = "css" ]
}
minify_css_file() {
local input="$1"
local output="$2"
cleancss -o "$output" "$input"
}
process_file() {
local file="$1"
local base output
if [ ! -f "$file" ]; then
skipped=$((skipped + 1))
report_lines+=("⊘ не найден: $(basename "$file")")
return
fi
if ! is_css_file "$file"; then
skipped=$((skipped + 1))
report_lines+=("⊘ не CSS: $(basename "$file")")
return
fi
base="${file%.*}"
output="${base}.min.css"
if minify_css_file "$file" "$output"; then
if [ -f "$output" ]; then
converted=$((converted + 1))
report_lines+=("✓ $(basename "$output")")
else
failed=$((failed + 1))
report_lines+=("✗ не создан: $(basename "$output")")
fi
else
failed=$((failed + 1))
report_lines+=("✗ ошибка: $(basename "$file")")
rm -f -- "$output"
fi
}
build_final_message() {
local message=""
message="Готово: ${converted} из $((${converted} + ${skipped} + ${failed}))"
message+="nПропущено: ${skipped}"
if [ "${failed}" -gt 0 ]; then
message+="nС ошибкой: ${failed}"
fi
if [ "${#report_lines[@]}" -gt 0 ]; then
message+="nn$(printf '%sn' "${report_lines[@]}")"
fi
printf '%s' "$message"
}
notify_result() {
local message="$1"
if [ "${failed}" -gt 0 ]; then
zenity --error --no-wrap --title="$SCRIPT_TITLE" --text="$message"
return
fi
if [ "${converted}" -eq 0 ]; then
zenity --warning --no-wrap --title="$SCRIPT_TITLE" --text="$message"
return
fi
zenity --info --no-wrap --title="$SCRIPT_TITLE" --text="$message"
}
selected=()
gather_selection selected "$@"
require_cleancss
if [ ${#selected[@]} -eq 0 ]; then
zenity --error --no-wrap --title="$SCRIPT_TITLE" --text="Список файлов пуст."
exit 1
fi
for file in "${selected[@]}"; do
process_file "$file"
done
notify_result "$(build_final_message)"
Комментарии
Пока нет комментариев — можете написать первый.