问题标签 [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.
shake-build-system - 并行处理多个构建配置
如何使用两种不同的配置构建一组源文件,而无需重新构建所有内容?
我当前的设置添加了一个选项 --config=rel,它将从 build_rel.cfg 加载所有选项并将所有内容编译到 build_rel/ 目录。
如果我再跑
我最终会得到两个版本
但是,每次我切换配置时,我最终都会重建所有内容。我猜这是因为我所有的神谕都“改变了”。我希望所有 oracles 都特定于我的两个不同的构建目录,以便更改不会干扰使用不同配置的构建之间。
我知道有一个 -m 选项可以指定数据库的存储位置,但我宁愿不必指定两个必须始终同步的选项。
解析 --config 选项后有没有办法更新选项shakeFiles?
另一个想法是参数化我的所有 Oracle 以包含我的构建配置,但后来我注意到 usingConfigFile 使用 Oracle,我也必须重新实现它。看起来很笨重。
有没有其他方法可以构建多个目标而不必重建所有内容?这似乎是一件微不足道的事情,但我仍然无法弄清楚。
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 中的包中的条目)。
haskell - Haskell 与 Twitch 一起摇晃?
作为我的构建系统,我正在(或尝试)从出色的tup切换到haskell 摇动。
只有我不知道如何在更改时重建文件。
我当然可以使用 inotify 或像filewatcher甚至watchman这样的包装器。
由于我使用的是抖动,我想知道如何与共享 do 语法的twitch集成,但在其他方面并没有提供太多的文档..
最终目标是将 pandoc 用于多格式文档。
tup 不足的唯一原因是它不支持目标。
haskell - 如何调试摇规则执行?
我喜欢将 Shake 作为构建系统,但我发现使用 Shake 难以解决的一件事是解决规则触发问题。我经常遇到这样一种情况,我认为某些东西不应该重建,但它却被重建了。
除了盯着代码和认真思考之外,还有哪些解决此类问题的指导方针?
haskell - `forP` 如何在动作中执行?
动作期望返回值Action ()
,但forP
返回Action[()]
。它如何在一个动作中执行?
haskell - 如果文件的一部分发生更改,则运行操作
Action
如果文件的一部分发生更改,推荐的运行方式是什么?
我的用例给出了一个我知道存在的文件(具体而言),如果部分文件更改(字段)elm-package.json
,则运行 shell 命令( )。elm package install --yes
dependencies
似乎Oracle
抽象公开了将值与最后一个值进行比较(通过Eq
)。所以我尝试了一个newtype
喜欢:
但是现在,我实际上在使用 type 的这个函数时遇到了困难ElmDependencies -> Action String
,因为我要编写的规则实际上并不关心返回的 String 是什么,它只是想在 String 发生变化时被调用。
换句话说,
在顶层不起作用;它每次都会运行该动作。
shake-build-system - 摇动构建捕获目录
我最近将我的作品基于构建系统转换为摇动。我现在正试图让shake 对目录结构的更改更加健壮,这样我就不必重新生成构建系统。
我使用的每个项目都是基于 C 的,并且具有以下目录结构
- 源代码
- 源文件夹 1
- 源文件夹 2
- 公司
- 公司文件夹 1
- 公司文件夹 2
我能够捕获所有源文件,但我无法开始工作的是捕获包含文件夹。我试图将根 inc 文件夹和子文件夹捕获到构建系统中的变量中。我一直在使用以下设置
这会给我包含的子文件夹,但不会给我根文件夹 inc。我认为我可以解决这个问题,但不会跟踪公司。
我想要的是有类似的东西
它将捕获每个子目录和根目录,并在构建系统中对其进行跟踪。
除了我也尝试过使用的东西
但是我需要在 include 中的每个元素前面加上我似乎无法弄清楚的“-I”。
我猜想如何在摇晃中做这件事,在 make 中我可以通过使用 make shell 函数和几个字符串操作函数来完成所有这些。
shake-build-system - 根据 node_modules 目录摇动
我在基于 npm 的项目中使用 Shake,但对如何处理node_modules
文件夹感到困惑。据我所知,流程应该很简单:
- 任何更改都
package.json
将导致node_modules
重新填充。 node_modules
对和/或的所有更改main.ts
都会导致与打字稿相关的脚本触发。在这种情况下,它只会为整个更改集合运行一次。
我如何编码这些依赖项?
haskell - 如何使用 Shake 编译 Haskell 程序
我有一个 Haskell 程序,我想用 GHC 编译,由 Shake 构建系统编排。我应该执行哪些命令,在什么情况下应该重新运行它们?
shake-build-system - 如何使用额外的命令行参数扩展 Shake?
我正在尝试扩展 Shake 命令行参数,有两个目标:
- 采取额外的标志,例如
--foo
。 - 要根据当前工作目录专门处理非标志参数,
go
根目录中的一件事和目录中的另一件事也是如此foobar
。
我怎样才能做到这一点?