是否有类似于 `cabal 运行` 的 `stack 运行`?
Is there a `stack run` similar to `cabal run`?
直到最近,我一直在执行这个 beauty 来构建 + 运行 一个带有堆栈的项目:
stack build && .stack-work/install/x86_64-linux/lts-4.1/7.10.3/bin/<project-name>
我在 IRC 上被告知这可以简化为
stack build && stack exec <project-name>
能不能再简化一下,变成
stack run
或至少
stack run <project-name>
?
如果我没记错的话,cabal run
是可能的。
编辑:
@haoformayor 的评论越来越近了:
alias b='stack build --fast --ghc-options="-Wall" && stack exec'
虽然这个还是需要项目名吧?
我也开始亲近
function stack-run () { stack build && stack exec `basename "$PWD"` }
尽管这仅在项目名称与文件夹名称匹配时才有效。也许我们可以查询 cabal/stack 以获取 .cabal 文件中的第一个 executable
条目?或者也许我们可以用 sed
...
正如此处提到的 http://docs.haskellstack.org/en/stable/README.html#quick-start-guide,您可以使用 stack exec my-project-exe
,其中 my-project-exe
是 .cabal 文件中可执行文件的名称。
您可以使用 --exec
告诉堆栈什么程序应该是 运行 成功构建后:
stack build --exec <executable-name>
您还可以为可执行文件指定参数,例如
stack unpack pandoc && cd pandoc*
stack build --exec "pandoc --version"
与 cabal run
相比,这可能是最接近的,因为 stack exec
和 --exec
标志都需要一个可执行名称。然而,最干净的变体是一个额外的 stack-run
命令,它执行 stack build --exec <first-executable in .cabal>
。在项目的 GitHub 问题跟踪器上可能值得 a feature request。
我有很好的使用经验:
https://hackage.haskell.org/package/stack-run
编辑 2018-04-05:Relevant stack issue.
旧答案:
这就是我现在所做的。
#/usr/bin/env sh
stack build && stack exec `basename "$PWD"` "$@"
我已将以下内容放入我的 $PATH
下名为 stack-run
的文件中。 ~/.local/bin/stack-run
就我而言。
这让我可以
$ stack-run
在任何目录中,甚至
$ stack run
因为在我几乎所有的项目中,项目的可执行文件都与文件夹同名,所以这很有效。但我希望通过对不同名称的支持来扩展它。
编辑 2016-09-26: 我也找到了这个,但还没有尝试过:
https://hackage.haskell.org/package/stack-run
直到最近,我一直在执行这个 beauty 来构建 + 运行 一个带有堆栈的项目:
stack build && .stack-work/install/x86_64-linux/lts-4.1/7.10.3/bin/<project-name>
我在 IRC 上被告知这可以简化为
stack build && stack exec <project-name>
能不能再简化一下,变成
stack run
或至少
stack run <project-name>
?
如果我没记错的话,cabal run
是可能的。
编辑:
@haoformayor 的评论越来越近了:
alias b='stack build --fast --ghc-options="-Wall" && stack exec'
虽然这个还是需要项目名吧?
我也开始亲近
function stack-run () { stack build && stack exec `basename "$PWD"` }
尽管这仅在项目名称与文件夹名称匹配时才有效。也许我们可以查询 cabal/stack 以获取 .cabal 文件中的第一个 executable
条目?或者也许我们可以用 sed
...
正如此处提到的 http://docs.haskellstack.org/en/stable/README.html#quick-start-guide,您可以使用 stack exec my-project-exe
,其中 my-project-exe
是 .cabal 文件中可执行文件的名称。
您可以使用 --exec
告诉堆栈什么程序应该是 运行 成功构建后:
stack build --exec <executable-name>
您还可以为可执行文件指定参数,例如
stack unpack pandoc && cd pandoc*
stack build --exec "pandoc --version"
与 cabal run
相比,这可能是最接近的,因为 stack exec
和 --exec
标志都需要一个可执行名称。然而,最干净的变体是一个额外的 stack-run
命令,它执行 stack build --exec <first-executable in .cabal>
。在项目的 GitHub 问题跟踪器上可能值得 a feature request。
我有很好的使用经验:
https://hackage.haskell.org/package/stack-run
编辑 2018-04-05:Relevant stack issue.
旧答案:
这就是我现在所做的。
#/usr/bin/env sh
stack build && stack exec `basename "$PWD"` "$@"
我已将以下内容放入我的 $PATH
下名为 stack-run
的文件中。 ~/.local/bin/stack-run
就我而言。
这让我可以
$ stack-run
在任何目录中,甚至
$ stack run
因为在我几乎所有的项目中,项目的可执行文件都与文件夹同名,所以这很有效。但我希望通过对不同名称的支持来扩展它。
编辑 2016-09-26: 我也找到了这个,但还没有尝试过: https://hackage.haskell.org/package/stack-run