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

问题描述

我正在使用uglifycss npm软件包来缩小项目输出目录中的所有CSS文件。我正在执行以下构建后脚本,以最小化CSS文件内容并通过附加*.min.css

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

执行脚本之前的文件

enter image description here

执行脚本后的文件

enter image description here

我想从完整的文件名路径中删除现有的.css,并将.min.css附加到该文件名路径中。我尝试了几种解决方案,但无法达到预期的结果。我已经查看过uglifycss文档,但找不到任何东西。有什么方法可以修剪{}文件路径中的扩展名?

解决方法

问题出在-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

,

找到答案here,并将其转化为您的需求

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