直到最近,我正在执行这个美容来构建+运行堆栈的项目:
stack build && .stack-work/install/x86_64-linux/lts-4.1/7.10.3/bin/<project-name>
Run Code Online (Sandbox Code Playgroud)
IRC告诉我,这可以简化为
stack build && stack exec <project-name>
Run Code Online (Sandbox Code Playgroud)
这可以进一步简化
stack run
Run Code Online (Sandbox Code Playgroud)
或至少
stack run <project-name>
Run Code Online (Sandbox Code Playgroud)
?
如果我没记错的话,这是可能的cabal run
.
编辑:
@ haoformayor的评论越来越近了:
alias b='stack build --fast --ghc-options="-Wall" && stack exec'
Run Code Online (Sandbox Code Playgroud)
虽然这还需要项目名称,对吗?
我也开始接近了
function stack-run () { stack build && stack exec `basename "$PWD"` }
Run Code Online (Sandbox Code Playgroud)
虽然这仅在项目名称与文件夹名称匹配时才有效.也许我们可以查询executable
.cabal文件中第一个条目的cabal/stack ?或者也许我们可以用sed
......
小智 13
因为它是在这里提到的http://docs.haskellstack.org/en/stable/README.html#quick-start-guide,您可以使用stack exec my-project-exe
那里my-project-exe
是你.cabal文件中的可执行文件的名称.
Zet*_*eta 10
您可以使用--exec
告诉堆栈成功构建后应运行的程序:
stack build --exec <executable-name>
Run Code Online (Sandbox Code Playgroud)
您还可以为可执行文件指定参数,例如
stack unpack pandoc && cd pandoc*
stack build --exec "pandoc --version"
Run Code Online (Sandbox Code Playgroud)
这可能是你得到的最接近的cabal run
,因为两者stack exec
和--exec
旗帜都需要一个可执行的名字.然而,最干净的变体是一个额外的stack-run
命令stack build --exec <first-executable in .cabal>
.在项目的GitHub问题跟踪器上可能值得一个功能请求.
我有很好的使用经验:
https://hackage.haskell.org/package/stack-run
编辑2018-04-05:相关堆栈问题.
老答案:
这就是我现在最终做的事情.
#/usr/bin/env sh
stack build && stack exec `basename "$PWD"` "$@"
Run Code Online (Sandbox Code Playgroud)
我把以下内容放入一个名为stack-run
my 的文件中$PATH
.~/.local/bin/stack-run
在我的情况下.
这让我可以
$ stack-run
Run Code Online (Sandbox Code Playgroud)
在任何目录中,甚至
$ stack run
Run Code Online (Sandbox Code Playgroud)
因为在我的几乎所有项目中,项目的可执行文件都与文件夹具有相同的名称,所以这是有效的.但我希望通过支持不同的名字来扩展它.
编辑2016-09-26:我也发现了这个,但还没试过呢:https: //hackage.haskell.org/package/stack-run
归档时间: |
|
查看次数: |
5276 次 |
最近记录: |