1

我正在使用 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文档,但找不到任何东西。有没有办法可以从 {} 文件路径修剪扩展名?

4

2 回答 2

3

问题在于-exec{}被完整的文件名替换,并且没有直接的方法可以从{}. 一种方法是使用 shell 操作

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添加回部分。

于 2020-08-19T12:05:48.347 回答
1

在此处找到答案并将其转换为您的需求

find dist/assets/css/ -type f -name "*.css" -exec bash -c 'name="{}"; uglifycss --output "${name//css/min.css}" "$name"' \; -exec rm {} \;
于 2020-08-19T12:05:41.630 回答