问题标签 [shake-build-system]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
61 浏览

haskell - 将新规则中的额外依赖项添加到现有规则

我正在编写一个 Shakefile,目的是使它可以用 new 扩展Rules。它的接口是一个函数mainFor :: Rules () -> IO (),其想法是客户项目只需要定义main = mainFor myCustomRules就可以让整个事情正常工作。mainFor customRules被定义为一堆 ShakeRules然后调用customRules.

只要传递给mainFor新目标的自定义规则是有效的。

但是,我的一些库存(非自定义)规则基本上是“使用此输入运行这个不透明的大型专有外部脚本并希望最好的”形式;并且外部脚本可能会根据其输入使用额外的文件。例如,假设我有以下形式的规则:

对于特定的客户项目,可能生成的源代码包含对另一个文件的引用_build/src/extrainput.src。所以在传递给的自定义规则中mainFor,我不仅需要为这个文件添加额外的规则,而且还应该修改现有规则以标记它need是这个输入:

但是,不出所料,这会失败,因为参数中的 stock 规则mainFor和第二个自定义规则customRules都针对同一个目标。请注意,我不想完全覆盖 stock 规则,只是扩展它以添加额外的依赖项。

0 投票
1 回答
71 浏览

haskell - 有没有办法让 Shake(构建系统)显示所有生成的规则

我有很多规则是通过调用带参数的函数生成的(类似的规则会根据要构建的项目略有不同),以及当没有传递参数或将“show_all”作为目标传递时我想列出出所有生成的规则。

我该怎么做或者不可能?

0 投票
1 回答
47 浏览

shake-build-system - 我如何询问 Shake 目标是否是最新的,例如 `make -q`?

使用 Make 我可以说make -q [target],退出代码将指示目标是否是最新的。Shake 有等价物吗?

0 投票
1 回答
43 浏览

shake-build-system - 通过 Shake 使用持久服务

我们有一个 Shake 构建系统,其中一些规则与 Postgres 数据库对话,作为一个持久的后台服务。我们如何使用 Shake 确保服务在需要时启动,并在 Shake 完成后关闭?

特别是,如果没有规则使用它,我们不希望启动该服务,如果使用它,我们不希望它在运行期间多次启动/停止。

0 投票
2 回答
86 浏览

shake-build-system - 摇晃是否具有与 make 的干运行选项等效的功能?

make实用程序允许您通过使用命令行选项查看将要构建的内容,而无需实际构建它--dry-run。有没有shake等价的东西?

0 投票
2 回答
181 浏览

haskell - Shake:如何在调用时设置环境变量?

在 Makefile 中,可以引用调用时在命令行中设置的参数make。例如,规则中的配方可能包括 command python/subsample.py $(subsample_size),在命令行中通过键入类似make subsample subsample_size=0.1.

我想对shake. 我写了以下规则:

问题在于shake将变量的命令行定义ev视为另一个目标:

如果我改为在没有命令行参数的情况下调用该规则,它将按预期运行:

0 投票
1 回答
135 浏览

shake-build-system - 震动规则能否确定自上次构建以来哪些“需求”发生了变化?

我正在为大型 Rub​​y(+ 其他东西)代码库构建一个基于抖动的构建系统,但我正在努力处理期望传递文件列表以“构建”的 Ruby 命令。

以 Rubocop(一种 linting 工具)为例。我可以看到三个选项:

  • 单独需要所有 Ruby 文件;如果它们发生更改,请针对每个更改的文件运行 rubocop
  • 需要所有 Ruby 文件;如果有任何更改,请对所有ruby​​ 文件运行 rubocop (如果只有一个或两个文件已更改,则非常慢,因为如果文件已更改,rubocop 计算速度很慢)
  • 需要所有 Ruby 文件;如果有任何更改,请将 Shake 检测到的更改依赖项列表传递给 rubocop

前两个规则在抖动中构建起来很简单,但我的问题是我无法弄清楚如何将最后一种情况表示为抖动规则。任何人都可以帮忙吗?

0 投票
1 回答
198 浏览

docker - 如何定义一个抖动规则来构建 docker 镜像?

Dockerfile我有一个shake build(0.16.4版),它用s和其他支持文件构建了很多docker镜像。我想将所有这些构建在一个单一的“规则”中,其输出将是一个 docker 图像。我已经阅读了 How to define a timer rule in Shake about custom rules in Shake 但这并没有解释如何定义自己的输出

我想表达类似的东西

然后将图像作为依赖项摇动跟踪。我已经在旧版本的抖动中实现了这种东西,但我对如何在 > 0.16 中实现它一无所知。

更新

我已经按照https://hackage.haskell.org/package/shake-0.17.3/docs/Development-Shake-Rule.html的指南尝试了这个

然后在Build.hs文件中使用它:

这似乎可行,但一个缺点是图像不可能want:我必须添加一个带有文件的规则才能使其工作。

0 投票
1 回答
138 浏览

dependencies - 使用抖动生成可视依赖图

我想看看 GHC 模块的依赖关系图。我可以使用 GHC 的基于 Shake 的构建系统 Hadrian 来生成一个吗?

0 投票
1 回答
19 浏览

shake-build-system - 假设某些规则是最新的,有没有办法运行抖动?

我们想在假设构建了一些目标的同时运行 Shake 构建,例如

阅读文档似乎应该有办法做到这一点,但我找不到它。