Измените расширение файла при создании выходного файла с помощью uglifycss
Я использую пакет uglifycss npm для минимизации всех файлов CSS из выходного каталога проекта. Я выполняю следующий сценарий после сборки, чтобы минимизировать содержимое файлов CSS и переименовать файлы, добавив*.min.css
find dist/assets/css/ -type f -name "*.css" -exec uglifycss --output {}.min.css {} \; -exec rm {} \;
Файлы перед выполнением скрипта:
Файлы после выполнения скрипта:
Я хочу удалить существующие.css
из полного пути к имени файла и добавить.min.css
к нему. Я пробовал несколько решений, но не смог добиться ожидаемого результата. Я просмотрел документы uglifycss, но ничего не нашел. Есть ли способ обрезать расширение по пути к файлу {}?
2 ответа
Проблема с -exec
, то {}
заменяется полным именем файла, и нет прямого способа удалить расширение из {}
. Один из способов - использовать манипуляции с оболочкой
find dist/assets/css/ -type f -name "*.css" -exec sh -c '
for file ; do
uglifycss --output "${file%.css}.min.css" "$file"
rm -- "$file"
done
' _ {} +
Уловка заключается в расширении параметров ${file%.css}.min.css
, расширение .css
удаляется и часть .min.css
добавлен обратно.
Нашел здесь ответ и преобразовал его в соответствии со своими потребностями, как это
find dist/assets/css/ -type f -name "*.css" -exec bash -c 'name="{}"; uglifycss --output "${name//css/min.css}" "$name"' \; -exec rm {} \;