如何在编译时 运行 bash 命令如 "npm install"

How to run bash commands like "npm install" on complie

我需要 运行 npm install && gulp build 在我的 static/semantic-ui 文件夹中,因此它会创建所需的 css 文件。

我在 Setup.hs 中看到了这个示例,但是在我的脚手架项目中我没有它,所以我的问题是将代码放置到 运行 那些 [=21] 的正确位置=] 命令。

如果您使用默认的 Yesod 脚手架(由 stack 工具生成),那么它确实不包含 Setup.hs(这有点奇怪,作为他们自己的指南 - https://github.com/commercialhaskell/stack/blob/master/doc/GUIDE.md - 建议将其作为一种良好做法)

Setup.hs 应该位于主项目目录中(与 stack.ymlyourproject.cabal 所在的位置相同)并且内容应该与您包含的示例中的内容大致相同(defaultMainWithHooks是关键部分)。

挂钩使用的详细信息在https://www.haskell.org/cabal/users-guide/developing-packages.html and in cabal spec: https://hackage.haskell.org/package/Cabal-1.24.0.0/docs/Distribution-Simple.html

中指定

顺便说一句,目前 stack 本身不支持预构建挂钩(有关详细信息,请参阅:https://github.com/commercialhaskell/stack/issues/503),因此您必须坚持使用 [=16= 提供的那些] - 这就是 Setup.hs 的来源。