Haskell 包 - 依赖树
Haskell packages - dependency tree
在 java - maven
构建工具中,您可以使用命令
打印任何 package/project
的依赖关系树
mvn dependency:tree -Dverbose -Dincludes=commons-collections
并且输出将是 artifacts/dependencies
的树结构,例如
[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] | \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] | \- commons-digester:commons-digester:jar:1.6:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO] \- commons-collections:commons-collections:jar:2.0:compile
那么,我如何使用 cabal
对 haskell 包执行同样的操作?
对于已安装的包,您可以使用 ghc-pkg
找到依赖项。对于名为 text
的包,您必须执行:
$ ghc-pkg field text depends
depends: array-0.5.0.0-470385a50d2b78598af85cfe9d988e1b
base-4.7.0.2-bfd89587617e381ae01b8dd7b6c7f1c1
bytestring-0.10.4.0-d6f1d17d717e8652498cab8269a0acd5
deepseq-1.3.0.2-63a1ab91b7017a28bb5d04cb1b5d2d02
ghc-prim-0.3.1.0-a24f9c14c632d75b683d0f93283aea37
integer-gmp-0.5.1.0-26579559b3647acf4f01d5edd9491a46
对于任何工作项目,您所要做的就是查看 cabal 文件中的 depends
字段以确定它的依赖性。
可以使用 ghc-pkg
生成包含所有已安装软件包的图表,例如
ghc-pkg dot | tred | dot -Tpdf >pkgs.pdf
请注意,graphviz
软件包提供了 tred
和 dot
程序。
可视化 Stack 项目的依赖关系:
https://docs.haskellstack.org/en/stable/dependency_visualization/
默认情况下,Stack 可视化内部依赖关系。
为了可视化 Cabal 项目的外部和内部依赖关系,cabal-plan
的工作原理是:
https://hackage.haskell.org/package/cabal-plan
即
cabal-plan dot | twopi -Groot=ROOT-PACKAGE -Goverlap=false -Tpng -o graph.png
(来源https://docs.haskellstack.org/en/stable/dependency_visualization/)
仅可视化 Cabal 项目的内部依赖关系:
cabal-plan --hide-global --hide-builtin dot | twopi -Groot=ROOT-PACKAGE -Goverlap=false -Tpng -o graph.png
(来源https://github.com/haskell-hvr/cabal-plan/issues/84#issuecomment-1073232622)
在 java - maven
构建工具中,您可以使用命令
package/project
的依赖关系树
mvn dependency:tree -Dverbose -Dincludes=commons-collections
并且输出将是 artifacts/dependencies
的树结构,例如
[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] | \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] | \- commons-digester:commons-digester:jar:1.6:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO] \- commons-collections:commons-collections:jar:2.0:compile
那么,我如何使用 cabal
对 haskell 包执行同样的操作?
对于已安装的包,您可以使用 ghc-pkg
找到依赖项。对于名为 text
的包,您必须执行:
$ ghc-pkg field text depends
depends: array-0.5.0.0-470385a50d2b78598af85cfe9d988e1b
base-4.7.0.2-bfd89587617e381ae01b8dd7b6c7f1c1
bytestring-0.10.4.0-d6f1d17d717e8652498cab8269a0acd5
deepseq-1.3.0.2-63a1ab91b7017a28bb5d04cb1b5d2d02
ghc-prim-0.3.1.0-a24f9c14c632d75b683d0f93283aea37
integer-gmp-0.5.1.0-26579559b3647acf4f01d5edd9491a46
对于任何工作项目,您所要做的就是查看 cabal 文件中的 depends
字段以确定它的依赖性。
可以使用 ghc-pkg
生成包含所有已安装软件包的图表,例如
ghc-pkg dot | tred | dot -Tpdf >pkgs.pdf
请注意,graphviz
软件包提供了 tred
和 dot
程序。
可视化 Stack 项目的依赖关系: https://docs.haskellstack.org/en/stable/dependency_visualization/ 默认情况下,Stack 可视化内部依赖关系。
为了可视化 Cabal 项目的外部和内部依赖关系,cabal-plan
的工作原理是:
https://hackage.haskell.org/package/cabal-plan
即
cabal-plan dot | twopi -Groot=ROOT-PACKAGE -Goverlap=false -Tpng -o graph.png
(来源https://docs.haskellstack.org/en/stable/dependency_visualization/)
仅可视化 Cabal 项目的内部依赖关系:
cabal-plan --hide-global --hide-builtin dot | twopi -Groot=ROOT-PACKAGE -Goverlap=false -Tpng -o graph.png
(来源https://github.com/haskell-hvr/cabal-plan/issues/84#issuecomment-1073232622)