stack基础命令
stack new 项目名
创建一个项目
stack init
生成stack.yml文件
stack setup
这个命令会检查你的项目所需的 GHC(Glasgow Haskell Compiler)版本是否已安装。如果没有,它会自动下载并安装所需版本。这个命令通常在第一次设置项目时使用。
以下命令查询当前项目的ghc版本,而不是系统的ghc版本
1 | stack exec -- ghc -v |
查看系统ghc版本
1 | ghc -v |
显示为项目下载ghc,不加参数在系统存在ghc的情况下不会下载
1 | stack setup --install-ghc |
stack build
这个命令会根据 stack.yaml 文件中指定的依赖项构建项目。它会编译项目的源代码,并确保所有依赖都正确安装和编译。这个命令是实际构建项目的核心命令。
stack install
这个命令会将构建好的可执行文件安装到你的系统中,通常是放在 ~/.local/bin 目录下。它可以让你在命令行中直接调用项目生成的可执行文件,而不需要指定完整路径。
stack update
此命令会更新 Stack 的包索引,以确保你获取到最新的可用库和依赖项。这是获取新版本库和更新信息的好方法。
stack可执行文件的路径
stack build之后的可执行文件路径通常是.stack-work\install\x86_64-linux-tinfo6\8a029dbf41a1c3fcb35019c33e03ac25af5edc3e649d290045c7d445666bbf8b\9.6.5\bin,包含了一个随机字符串,而在配置Dockerfile的时候需要固定的路径,这时候可以通过以下方式解决
stack path –local-install-root
1 | RUN EXEC_PATH=$(stack path --local-install-root)/bin && \ |
通过stack path --local-install-root找到目录并复制到/tmp下
stack build –copy-compiler-tool
该命令会将可执行文件复制一份到.stack/compiler-tools/x86_64-linux-tinfo6/ghc-9.6.5/bin/下
stack run
根据 package.yaml 中的配置来运行项目的主模块,通常是定义在 executable 部分的模块。