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:

enter image description here

Dateien nach Ausführung des Skripts:

enter image description here

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?

1
Suhaib Janjua 19 Aug. 2020 im 14:44

2 Antworten

Beste Antwort

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.

3
Inian 19 Aug. 2020 im 12:05

Hier finden Sie die Antwort und wandeln Sie sie in Ihre Anforderungen um

find dist/assets/css/ -type f -name "*.css" -exec bash -c 'name="{}"; uglifycss --output "${name//css/min.css}" "$name"' \; -exec rm {} \;
1
Ivan 19 Aug. 2020 im 12:05