问题标签 [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 - 从动作生成震动规则
我想在我的项目中找到所有的“Makefile”,然后根据它们生成规则。但是,看起来(故意)没有什么可以逃脱动作。因此,我在摇动功能之前将我的“Makefile”扫描仪提升到了 IO 操作。
有没有更好的办法?
shake-build-system - 我应该如何在 Shake 文件模式中插入环境变量?
在我的 Makefiles 中,我更喜欢由环境变量定义输出目录,而不是硬编码(如果未设置,则使用一些合理的默认值)。例如,Make 规则看起来像
我还没有弄清楚如何在 Shake 中实现类似的目标。我喜欢用getEnvWithDefault
它来获取环境变量的值或合理的默认值,但是没有多少用绑定或 lambda 来抨击它让我可以将它与(*>)
.
怎么可能在 FilePattern 中插入环境变量以用于(*>)
?
haskell - 摇:无效声明:导入 Development.Shake
我第一次尝试使用摇,尝试按照此处的说明进行操作:https ://github.com/ndmitchell/shake/blob/master/docs/Manual.md#readme
我逐字复制了makefile并运行了shake。摇印shake: Invalid statement: import Development.Shake
。我的第一个想法是,可能已经发布了一个新版本,其中这些 import 语句已经变得多余。所以我将它们评论出来并得到了shake: Invalid statement: -- import Development.Shake
. 所以我删除了它们。这是输出:
GHC 可以很好地编译生成文件。我不太确定还能做些什么来调试(我远不是 Haskell 专家!)。
有点相关(至少与教程相关)shake --demo
似乎不再存在。
shake-build-system - 取决于生成的文件
need
生成文件的规则的正确方法是什么?这是我尝试过的:
但这会导致generated
不重新运行的规则,因此a.out
在重复运行后保持不变。
haskell - 如何定义取决于输入的某些修改的 Shake 规则
使用 Shake,我想定义一个依赖于一堆可执行文件(例如exe
,dll
等)的规则。但是,在使用它们之前,它们需要进行数字签名。由于“签名”实际上不会生成新文件,我如何确保我的规则仅依赖于签名后的文件?
编辑:消歧是为了。我的规则会生成其中一些文件,但不是全部。有些是第三方的,是我们存储库的一部分。所以不知何故,我需要在签名后依赖这些静态文件。
haskell - 使用shake为一组文件定义规则,在构建时未知
我正在使用 Shake 开发一个复杂的构建脚本,但是(目前)我正在使用 Visual Studio 解决方案来构建所有二进制文件。因此,我需要定义一个规则,在一次扫描中构建数十个文件。在完成之前,我不知道构建输出会是什么。
因此,例如,我想编写如下规则:
但是,就目前而言,规则*.test-results
不知道如何构建testExe
,因为没有规则正式定义如何构建。我该如何解决这个问题?
shake-build-system - 为交叉编译而摇晃?
我有一个构建两组目标的项目。一种是手持设备的各种版本的固件,最终为每个设备创建一个 .dfu 文件。这使用了 arm 编译链。另一组是为构建平台编译代码的相同设备的模拟器(嗯,通常无论如何)。我继承的 Makefile 在 cc != gcc 的任何环境中都无法正常工作,因为将编译器传递给递归 make 存在问题。
我正在考虑在抖动中重写构建文件,但想知道它可以如何处理想要做一个“make release”,然后用不同的编译器或标志多次编译同一组源文件以生成不同类型的二进制文件. 这不是我以前遇到过的问题,而且根据我的谷歌搜索,没有很多人公开谈论过。
haskell - Shake 是否适合为人类用户构建半自动化工具?
如何使每次构建时填充的脚本执行“外部”操作?
haskell - 如何删除无法构建的目标?
我想删除不再有源但没有清理的文件。
是否支持部分清理增量构建?在这种情况下,我想我可以与之前构建中使用的一组源文件进行比较,并定义如何清理那些已经消失的源文件。
haskell - 从(Action a)的内容动态生成规则
我目前正在测试将我们的构建系统从 make 移植到shake 并且遇到了障碍:
给定以下项目结构:
也就是说,不同的输入扩展映射到相同的输出扩展,所以一个简单的"build//*.js" %>
规则是行不通的。
如果可能,我想避免使用优先级,并编写一个临时构建规则来检查是否存在任何可能的输入感觉很笨重(特别是因为这种情况也发生在其他文件类型中),所以我写了以下内容:
这样,我可以为每种输入类型 ( .coffee -> .js
, .svg -> .png
) 等定义一个映射,只需少量代码实现每个输入类型的转换。它几乎可以工作。
但据我所知,如果不先将价值扔进客场,(Action a)
似乎Rules _
是不可能的。Action
是否有 type(Action a) -> (a -> Rules ()) -> Rules ()
或的函数(Action a) -> (Rules a)
?我可以自己实现一个,还是需要修改库的代码?
或者这整个方法是愚蠢的,我应该采取其他途径?