Manage your WordPress plugins and themes with Composer https://wp-packages.org/
  • Go 72.2%
  • HTML 21.1%
  • Shell 3.5%
  • JavaScript 1.6%
  • Jinja 1%
  • Other 0.6%
Find a file
Ben Word 154cb2f376
Migrate templates from html/template to Jet v6
Replace Go's html/template with CloudyKit/jet/v6 for server-rendered
templates. Jet provides first-class parameterized blocks, template
inheritance via extends/yield, and C-like expressions — eliminating
the dict helper workarounds that html/template required for reusable
components.

Add components.html with four reusable Jet blocks:
- shell(command, variant, class) — copyable command boxes (replaces
  ~16 duplicated instances across 6 templates)
- notice(variant, class) with yield content — alert boxes with
  variant-based styling and content slots
- input(icon, name, ...) — form inputs with icon and keyboard hint
- pagination(pager, class) — pagination controls driven by
  pre-computed buildPagination() data

Key changes:
- templates.go: embed.FS loader for Jet, function registration via
  AddGlobal, buildPagination() helper, render() using VarMap
- handlers.go: simplified render calls (no more template combinations)
- router.go: *jet.Set replaces *templateSet
- All 13 templates converted to Jet syntax (extends/block/yield)
- Tailwind scanning unaffected (templates remain .html files)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 14:05:25 -05:00
.github/workflows Remove only from usage instructions (#43) 2026-03-21 13:45:35 -05:00
benchmarks Remove only from usage instructions (#43) 2026-03-21 13:45:35 -05:00
cmd/wppackages Add public status page (#89) 2026-04-02 21:24:20 -05:00
deploy/ansible Implement socket-activated zero-downtime deploy switchover (#67) 2026-04-04 14:07:54 -05:00
docs Add public status page (#89) 2026-04-02 21:24:20 -05:00
internal Migrate templates from html/template to Jet v6 2026-04-05 14:05:25 -05:00
migrations Add public status page (#89) 2026-04-02 21:24:20 -05:00
scripts Add user prompt for script deletion after successful migration (#64) 2026-03-25 14:42:33 -05:00
test Replace shell smoke test with Go integration tests (#26) 2026-03-19 00:38:21 -04:00
.air.toml Split make dev into bootstrap + live-reload (#55) 2026-03-22 21:37:33 -04:00
.gitignore WP Packages rename (#42) 2026-03-19 11:50:12 -05:00
.golangci.yml Update lint config (#45) 2026-03-19 23:36:56 -04:00
CLAUDE.md WP Packages rename (#42) 2026-03-19 11:50:12 -05:00
go.mod Migrate templates from html/template to Jet v6 2026-04-05 14:05:25 -05:00
go.sum Migrate templates from html/template to Jet v6 2026-04-05 14:05:25 -05:00
LICENSE.md Initial commit 2026-03-14 13:36:07 -05:00
litestream.yml Fix database is locked errors by tuning WAL checkpointing for Litestream (#94) 2026-04-04 10:37:27 -05:00
Makefile Incremental sync refactor (phase 2) (#90) 2026-04-03 10:11:18 -05:00
migrations.go WP Packages rename (#42) 2026-03-19 11:50:12 -05:00
README.md Add public status page (#89) 2026-04-02 21:24:20 -05:00
seeds.yaml Initial commit 2026-03-14 13:36:07 -05:00

WP Packages

Total Installs Status Build status Follow Roots Sponsor Roots

Manage your WordPress plugins and themes with Composer.

Support us

Roots is an independent open source org, supported only by developers like you. Your sponsorship funds WP Packages and the entire Roots ecosystem, and keeps them independent. Support us by purchasing Radicle or sponsoring us on GitHub — sponsors get access to our private Discord.

Sponsors

Carrot WordPress.com Itineris Kinsta

WP Packages vs WPackagist

WP Packages WPackagist
Package naming wp-plugin/* wp-theme/* wpackagist-plugin/* wpackagist-theme/*
Package metadata Includes authors, description, homepage, and support links Missing — requested since 2020
Update frequency Every 5 minutes ~1.5 hours (estimated)
Composer v2 metadata-url
Composer v2 metadata-changes-url
Install statistics
Public status page See status page
Untagged plugin installs Immutable — pinned to SVN revision Mutable, resulting in unexpected plugin updates

Composer resolve times

Cold resolve (no cache) — lower is better:

Plugins WP Packages WPackagist Speedup
10 plugins 0.7s 12.3s 17x faster
20 plugins 1.1s 19.0s 17x faster

Documentation

See the documentation for usage instructions, example composer.json configurations, and more.

Roots WordPress Packages

Roots provides WordPress core as Composer packages — roots/wordpress, roots/wordpress-full, and roots/wordpress-no-content. Learn more.

Migrating from WPackagist

Use the migration script to automatically update your composer.json:

curl -sO https://raw.githubusercontent.com/roots/wp-packages/main/scripts/migrate-from-wpackagist.sh && bash migrate-from-wpackagist.sh

Community