zig-package-management

Adding dependencies to Zig projects

Zig Package Management

Use this skill when:

build.zig.zon

.{
    .name = "my-project",
    .version = "0.1.0",
    .dependencies = .{
        .@"some-package" = .{
            .url = "https://github.com/user/package/archive/main.tar.gz",
            .hash = "1220abcdef...",
        },
    },
    .paths = .{
        "build.zig",
        "build.zig.zon",
        "src",
    },
}

Adding Dependencies

# Zig will prompt for hash on first build
zig build

# Or fetch manually
zig fetch --save https://github.com/user/package/archive/main.tar.gz

Using Dependencies in build.zig

pub fn build(b: *std.Build) void {
    const target = b.standardTargetOptions(.{});
    const optimize = b.standardOptimizeOption(.{});

    const exe = b.addExecutable(.{
        .name = "my-app",
        .root_source_file = .{ .path = "src/main.zig" },
        .target = target,
        .optimize = optimize,
    });

    // Add dependency
    const pkg = b.dependency("some-package", .{
        .target = target,
        .optimize = optimize,
    });

    exe.root_module.addImport("pkg", pkg.module("pkg"));

    b.installArtifact(exe);
}

Using Imported Packages

const std = @import("std");
const pkg = @import("pkg");

pub fn main() !void {
    pkg.doSomething();
}

Related Skills