【发布时间】:2015-03-02 15:22:33
【问题描述】:
我正在尝试使用 Waf 创建一个自动化流程,以基于 HTML5 样板的 ANT 构建脚本优化、缩小等网站的源文件。其中一部分包括通过两个实用程序运行 img 目录中的所有 PNG,optipng 和 advpng。
这是我目前在这些任务上的最佳尝试:
def build(ctx):
ctx(
rule = '${OPTIPNG} -quiet -o5 -i 1 -out ${TGT} ${SRC}',
source = 'img1.png',
target = 'img1-opt.png'
)
ctx(
rule = '${ADVPNG} -z -1 ${SRC}',
source = SOMETHING,
target = SOMETHING ELSE
)
我首先在 img1 上运行 optipng,这是我的第一个问题。我希望输出文件与输入文件具有相同的名称。但是,将target 设置为相同的名称会导致 Waf 检测到死锁。所以,我通过附加后缀继续前进。
advpng 有点奇怪,因为它不会创建新的输出文件:它会修改输入文件。所以,我现在需要一种方法来访问 optipng 的输出,它现在驻留在构建的输出目录中。
完成这项任务的正确方法是什么?
【问题讨论】: