HQL Packages

HQL packages publish ordinary JavaScript artifacts while keeping HQL source as the authoring format.

Create A Package

hql init ./my-lib --name @example/my-lib --version 0.1.0

This creates package config and source layout for the HQL package manager.

Add Dependencies

hql add ./my-lib npm:lodash-es@^4.17.21
hql add ./my-lib jsr:@std/encoding@^1.0.0
hql add ./my-lib https://example.com/mod.ts

HQL accepts npm, JSR, URL, and bare specifier inputs through the package command surface.

Check, Build, Pack, Publish

hql check ./my-lib
hql build ./my-lib --target jsr
hql pack ./my-lib --target all
hql publish ./my-lib --dry-run

hql publish --dry-run runs the publish pipeline without uploading artifacts. Use it before publishing real artifacts.

Raw Source vs Compiled ESM

Use the HQL toolchain for raw .hql files:

hql run main.hql
hql compile main.hql -o main.js

Plain Node.js, Deno, Bun, and browsers consume the compiled ESM output. They do not load raw .hql source unless a bundler/plugin or HQL runtime toolchain is involved.

Module Identity

The module system canonicalizes imports so equivalent module specifiers share a single module namespace. Cycles are represented as ESM cycles instead of duplicated compiled copies.

See Language: Modules for syntax and import forms.

Next