问题标签 [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 回答
82 浏览

shake-build-system - 并行处理多个构建配置

如何使用两种不同的配置构建一组源文件,而无需重新构建所有内容?

我当前的设置添加了一个选项 --config=rel,它将从 build_rel.cfg 加载所有选项并将所有内容编译到 build_rel/ 目录。

如果我再跑

我最终会得到两个版本

但是,每次我切换配置时,我最终都会重建所有内容。我猜这是因为我所有的神谕都“改变了”。我希望所有 oracles 都特定于我的两个不同的构建目录,以便更改不会干扰使用不同配置的构建之间。

我知道有一个 -m 选项可以指定数据库的存储位置,但我宁愿不必指定两个必须始终同步的选项。

解析 --config 选项后有没有办法更新选项shakeFiles?

另一个想法是参数化我的所有 Oracle 以包含我的构建配置,但后来我注意到 usingConfigFile 使用 Oracle,我也必须重新实现它。看起来很笨重。

有没有其他方法可以构建多个目标而不必重建所有内容?这似乎是一件微不足道的事情,但我仍然无法弄清楚。

0 投票
2 回答
52 浏览

shake-build-system - 为什么shake对这个简单构建系统的进度估计是非常错误的?

我有以下构建系统

我用它构建stack build和运行stack exec myShake -- --progress a

如果我做了一个干净的构建然后touch a.in再次运行,shake 会向我显示非常错误的进度预测。有时它会预测 1000 分钟甚至更多。

(因为我每 5 秒在终端的标题栏中得到一个进度预测,如果我理解正确,我在这里只讨论第一个进度预测,因为这是我在这个构建系统示例中得到的唯一一个。)

我将 lts-9.6 与堆栈和摇动版本 0.16 一起使用(通过 git + stack.yaml 中的包中的条目)。

0 投票
2 回答
196 浏览

haskell - Haskell 与 Twitch 一起摇晃?

作为我的构建系统,我正在(或尝试)从出色的tup切换到haskell 摇动。

只有我不知道如何在更改时重建文件。

我当然可以使用 inotify 或像filewatcher甚至watchman这样的包装器。

由于我使用的是抖动,我想知道如何与共享 do 语法的twitch集成,但在其他方面并没有提供太多的文档..

最终目标是将 pandoc 用于多格式文档。

tup 不足的唯一原因是它不支持目标。

0 投票
1 回答
77 浏览

haskell - 如何调试摇规则执行?

我喜欢将 Shake 作为构建系统,但我发现使用 Shake 难以解决的一件事是解决规则触发问题。我经常遇到这样一种情况,我认为某些东西不应该重建,但它却被重建了。

除了盯着代码和认真思考之外,还有哪些解决此类问题的指导方针?

0 投票
1 回答
43 浏览

haskell - `forP` 如何在动作中执行?

动作期望返回值Action (),但forP返回Action[()]。它如何在一个动作中执行?

0 投票
1 回答
69 浏览

haskell - 如果文件的一部分发生更改,则运行操作

Action如果文件的一部分发生更改,推荐的运行方式是什么?

我的用例给出了一个我知道存在的文件(具体而言),如果部分文件更改(字段)elm-package.json,则运行 shell 命令( )。elm package install --yesdependencies

似乎Oracle抽象公开了将值与最后一个值进行比较(通过Eq)。所以我尝试了一个newtype喜欢:

但是现在,我实际上在使用 type 的这个函数时遇到了困难ElmDependencies -> Action String,因为我要编写的规则实际上并不关心返回的 String 是什么,它只是想在 String 发生变化时被调用。

换句话说,

在顶层不起作用;它每次都会运行该动作。

0 投票
2 回答
72 浏览

shake-build-system - 摇动构建捕获目录

我最近将我的作品基于构建系统转换为摇动。我现在正试图让shake 对目录结构的更改更加健壮,这样我就不必重新生成构建系统。

我使用的每个项目都是基于 C 的,并且具有以下目录结构

  • 源代码
    • 源文件夹 1
    • 源文件夹 2
  • 公司
    • 公司文件夹 1
    • 公司文件夹 2

我能够捕获所有源文件,但我无法开始工作的是捕获包含文件夹。我试图将根 inc 文件夹和子文件夹捕获到构建系统中的变量中。我一直在使用以下设置

这会给我包含的子文件夹,但不会给我根文件夹 inc。我认为我可以解决这个问题,但不会跟踪公司。

我想要的是有类似的东西

它将捕获每个子目录和根目录,并在构建系统中对其进行跟踪。

除了我也尝试过使用的东西

但是我需要在 include 中的每个元素前面加上我似乎无法弄清楚的“-I”。

我猜想如何在摇晃中做这件事,在 make 中我可以通过使用 make shell 函数和几个字符串操作函数来完成所有这些。

0 投票
1 回答
59 浏览

shake-build-system - 根据 node_modules 目录摇动

我在基于 npm 的项目中使用 Shake,但对如何处理node_modules文件夹感到困惑。据我所知,流程应该很简单:

  • 任何更改都package.json将导致node_modules重新填充。
  • node_modules对和/或的所有更改main.ts都会导致与打字稿相关的脚本触发。在这种情况下,它只会为整个更改集合运行一次。

我如何编码这些依赖项?

0 投票
1 回答
313 浏览

haskell - 如何使用 Shake 编译 Haskell 程序

我有一个 Haskell 程序,我想用 GHC 编译,由 Shake 构建系统编排。我应该执行哪些命令,在什么情况下应该重新运行它们?

0 投票
1 回答
83 浏览

shake-build-system - 如何使用额外的命令行参数扩展 Shake?

我正在尝试扩展 Shake 命令行参数,有两个目标:

  • 采取额外的标志,例如--foo
  • 要根据当前工作目录专门处理非标志参数,go根目录中的一件事和目录中的另一件事也是如此foobar

我怎样才能做到这一点?