摇动构建而不为每个输入文件生成一个文件

shake build without producing a file for every input file

从网站的 .md 文件构建 .html 文件,我有一些 .md 文件不应产生输出 .html(例如,因为还没有准备好出版物)。使用 shake 实现此目标的最佳方法是什么?

我有 html 文件的 want 和搜索相应 .md 文件的规则,但有些规则不会生成 .htmlshake 停止 错误 Error, rule finished running but did not produce file:.

处理这种情况的最佳方法是什么?

目前的限制是每个文件都必须产生一个结果。其他一些构建系统对此稍微宽松一些,但我的经验是它几乎总是错误的来源 - 虽然在某些情况下它很有用(例如你的)。选项是:

  • 如果您可以轻松检测到文件不需要为其创建输出,则可以在 want 之前执行此操作 - 即通过将 want 转换为 action调用 need,但仅针对输出的子集。
  • 如果检测到您不需要创建任何东西是昂贵的,您可以有一个规则总是生成一个文件,但有时会生成一个空文件,然后一个单独的规则依赖于该文件并只复制有内容的。

不幸的是,这两种情况都不理想。在某一时刻,Shake 可以选择将创建文件失败作为有效结果,如果有足够的需求,可以重新引入。