Ich verwende das Paket uglifycss npm, um alle CSS-Dateien aus dem Projektausgabeverzeichnis zu minimieren. Ich führe das folgende Post-Build-Skript aus, um den Inhalt der CSS-Dateien zu minimieren und die Dateien durch Anhängen von *.min.css
umzubenennen.
find dist/assets/css/ -type f -name "*.css" -exec uglifycss --output {}.min.css {} \; -exec rm {} \;
Dateien vor dem Ausführen des Skripts:
Dateien nach Ausführung des Skripts:
Ich möchte vorhandene .css
aus dem vollständigen Dateinamenpfad entfernen und .min.css
daran anhängen. Ich habe mehrere Lösungen ausprobiert, konnte aber das erwartete Ergebnis nicht erzielen. Ich habe die uglifycss -Dokumente durchgesehen, konnte aber nichts finden. Gibt es eine Möglichkeit, die Erweiterung vom {} Dateipfad zu kürzen?
2 Antworten
Das Problem ist mit -exec
, das {}
wird durch den vollständigen Dateinamen ersetzt und es gibt keine direkte Möglichkeit, die Erweiterung aus {}
zu entfernen. Eine Möglichkeit wäre die Verwendung der Shell-Manipulation
find dist/assets/css/ -type f -name "*.css" -exec sh -c '
for file ; do
uglifycss --output "${file%.css}.min.css" "$file"
rm -- "$file"
done
' _ {} +
Der Trick besteht darin, dass die Parametererweiterung ${file%.css}.min.css
, die Erweiterung .css
entfernt und der Teil .min.css
wieder hinzugefügt wird.
Verwandte Fragen
Neue Fragen
shell
Der Begriff "Shell" bezieht sich auf eine allgemeine Klasse textbasierter interaktiver Befehlsinterpreter, die am häufigsten mit den Unix- und Linux-Betriebssystemen verbunden sind. Bei Fragen zu Shell-Skripten verwenden Sie bitte ein spezifischeres Tag wie "bash", "Powershell" oder "ksh". Ohne ein bestimmtes Tag sollte eine tragbare (POSIX-kompatible) Lösung angenommen werden, obwohl die Verwendung von 'posix' zusätzlich oder 'sh' vorzuziehen ist.