使用 uglifycss 生成输出文件时更改文件扩展名

Change file extension while generating output file using uglifycss

我正在使用 uglifycss npm 包缩小项目输出目录中的所有 CSS 文件。我正在执行以下 post-build 脚本以缩小 CSS 文件内容并通过附加 *.min.css

重命名文件
find dist/assets/css/ -type f -name "*.css" -exec uglifycss --output {}.min.css {} \; -exec rm {} \;

执行脚本前的文件:

执行脚本后的文件:

我想从完整文件名路径中删除现有 .css 并向其附加 .min.css。我尝试了几种解决方案,但无法达到预期的结果。我浏览了 uglifycss 文档,但找不到任何内容。有什么方法可以 trim 来自 {} 文件路径的扩展名?

找到答案here并像这样将其转换为您的需要

find dist/assets/css/ -type f -name "*.css" -exec bash -c 'name="{}"; uglifycss --output "${name//css/min.css}" "$name"' \; -exec rm {} \;

问题出在 -exec{} 被替换为完整的文件名,并且没有直接的方法从 {} 中删除扩展名。一种方法是使用 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
' _ {} +

诀窍在于参数扩展 ${file%.css}.min.css,扩展 .css 被删除,部分 .min.css 被添加回来。