`stack haddock --skip <pkgname>` 有什么作用?

What does `stack haddock --skip <pkgname>` do?

在我的项目无法 运行 stack haddock 因为一个包导致它挂起后(参见 How to show progress of `stack haddock`? )我试图 skip那个包裹

stack haddock --skip haskell-src-exts

但它仍然会尝试黑线鳕 haskell-src-exts(并挂起)。 --skip 应该做什么?

--skip 是在 stack 1.6.1 中引入的,以避免构建项目的特定组件。一个组件对应于一个测试套件、一个可执行文件或一个基准测试套件。随着背包支持的实施,这也必须包括图书馆。

来自stack build --help

--skip ARG Skip given component, can be specified multiple times

文档更详细。

  • --skip, to skip building components of a local package. It allows you to skip test suites and benchmark without specifying other components (e.g. stack test --skip long-test-suite will run the tests without the long-test-suite test suite). Be aware that skipping executables won't work the first time the package is built due to an issue in cabal. This option can be specified multiple times to skip multiple components.

例如,一个包 my-package 可能有一个库、一个可执行文件 my-executable 和两个测试套件(unit-testsintegration-tests)。要构建和 运行 测试,您可以 运行 stack test。添加 --skip integration-tests 将导致无法构建 integration-tests 组件(也不构建 运行)。

不幸的是,当前版本的 stack(1.9 分支)不支持针对单个依赖项跳过黑线鳕,尽管在不久的将来会有类似的东西。我遇到了这个完全相同的问题(haskell-src-exts)。现在,我建议跳过所有黑线鳕依赖项 (--no-haddock-deps)。

如果您希望将参数传递给黑线鳕,而这些参数不适用于堆栈标志 --haddock-arguments.

,您可能希望使用 stack exec -- haddock 调用黑线鳕