project.cabal 文件的 build-depends 中的 `stack install NAME` 和 `NAME` 有什么区别?

What's the difference between `stack install NAME` and `NAME` in the build-depends of project.cabal file?

在项目 .cabal filebuild-depends: 部分下添加 package_name 与在该项目目录中执行 stack install package_name 有什么区别?

stack install 只会将包安装到适当的位置(Stackage 中的库的当前快照数据库,其他库的 ./.stack-work 中的沙箱,~/.local/bin 或您系统的等效项其中用于可执行文件)。将库添加到 build-depends 将其指定为项目的依赖项,并导致在您下次执行 stack build 时安装该库。如果您确实在项目中使用该库,则必须将其添加到 build-depends,否则您将无法构建项目(甚至无法使用 stack ghci 来使用该库)。

N.B.: 从 stack-0.1.3.1 开始,stack install NAME 只是 stack build --copy-bins NAME 的同义词。 --copy-bins 选项告诉堆栈将任何可执行文件复制到 ~/.local/bin。如果您的包只是一个没有可执行文件的库,stack install NAMEstack build NAME.

相同