问题描述
我正在使用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文档,但找不到任何东西。有什么方法可以修剪{}文件路径中的扩展名?
解决方法
问题出在-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 {} \;