rules_haskell 使用教程
rules_haskellHaskell rules for Bazel.项目地址:https://gitcode.com/gh_mirrors/ru/rules_haskell
1、项目介绍
rules_haskell
是一个为 Bazel 构建工具提供 Haskell 构建规则的开源项目。Bazel 是一个自动化构建和测试软件的工具,适用于多语言的大型项目。rules_haskell
扩展了 Bazel 的功能,使其能够支持 Haskell 项目的构建。
该项目由 Tweag 维护,旨在帮助开发者更高效地使用 Bazel 构建 Haskell 项目。通过 rules_haskell
,开发者可以利用 Bazel 的强大功能来管理 Haskell 项目的依赖、构建和测试。
2、项目快速启动
安装 Bazel
首先,确保你已经安装了 Bazel 6.0 或更高版本。你可以通过以下命令检查 Bazel 版本:
bazel --version
添加 rules_haskell
依赖
在你的项目根目录下创建一个 MODULE.bazel
文件,并添加以下内容:
bazel_dep(name = "rules_haskell", version = "0.19")
构建项目
假设你有一个简单的 Haskell 项目,项目结构如下:
my_project/
├── WORKSPACE
├── BUILD
└── Main.hs
在 BUILD
文件中添加以下内容:
load("@rules_haskell//haskell:defs.bzl", "haskell_binary")
haskell_binary(
name = "my_haskell_binary",
srcs = ["Main.hs"],
)
然后在项目根目录下运行以下命令来构建项目:
bazel build //:my_haskell_binary
3、应用案例和最佳实践
构建 Cabal 包
rules_haskell
支持构建 Cabal 包。你可以通过以下步骤来构建一个 Cabal 包:
- 在
BUILD
文件中定义haskell_library
或haskell_binary
目标。 - 使用
cabal_package
规则来定义 Cabal 包。
示例:
haskell_library(
name = "my_haskell_library",
srcs = glob(["src/**/*.hs"]),
deps = ["@stackage//:base"],
)
cabal_package(
name = "my_cabal_package",
version = "0.1.0",
library = ":my_haskell_library",
)
使用 Nix 构建
如果你使用 NixOS,rules_haskell
提供了与 Nix 的集成。你可以通过以下步骤来使用 Nix 构建 Haskell 项目:
- 在
MODULE.bazel
文件中添加rules_nixpkgs
依赖。 - 在
BUILD
文件中使用nixpkgs_package
规则来定义 Nix 包。
示例:
load("@rules_nixpkgs//nixpkgs:nixpkgs.bzl", "nixpkgs_package")
nixpkgs_package(
name = "ghc",
repositories = {"nixpkgs": "@nixpkgs//:default.nix"},
nix_file = "//:ghc.nix",
)
4、典型生态项目
Bazel
rules_haskell
是 Bazel 生态系统的一部分,Bazel 是一个强大的构建工具,支持多种编程语言。通过 rules_haskell
,Bazel 可以扩展其功能,支持 Haskell 项目的构建。
Nix
Nix 是一个功能强大的包管理器和构建系统,rules_haskell
提供了与 Nix 的集成,使得在 NixOS 上构建 Haskell 项目更加方便。
Cabal
Cabal 是 Haskell 的包管理器,rules_haskell
支持构建 Cabal 包,使得开发者可以利用 Bazel 的强大功能来管理 Haskell 项目的依赖和构建。
通过这些生态项目的集成,rules_haskell
为 Haskell 开发者提供了更加灵活和高效的构建工具链。
rules_haskellHaskell rules for Bazel.项目地址:https://gitcode.com/gh_mirrors/ru/rules_haskell