Inkstead Writer

Commands

This page lists every inkstead-writer command in one place. Inside a site, run commands through the ./inkstead-writer wrapper. The globally installed inkstead-writer is mainly for creating sites and managing cached binaries.

In this guide you will learn:

  • how the ./inkstead-writer wrapper keeps a site on the right version
  • which commands you use while writing and previewing
  • which commands build, publish and check a site
  • which commands manage themes, updates and the binary cache

The ./inkstead-writer wrapper

Every site has a small script called inkstead-writer at its root, created by init. Running ./inkstead-writer uses it instead of the global binary.

The wrapper reads the version recorded in inkstead-writer.json and runs exactly that Inkstead Writer release. If that release is not on your machine yet, the wrapper downloads it, verifies its checksum and caches it, so the first run needs a network connection and later runs do not. The same site therefore behaves the same everywhere: on your machine, on another computer and in CI.

The wrapper works from anywhere inside the site and runs commands from the site root. The bare inkstead-writer command is only needed before a site exists, for installing and for inkstead-writer init.

Writing

CommandWhat it does
new postCreates an article or note with the right filename and frontmatter. Options: --kind (article or note), --title, --text.
devBuilds the site, serves it locally and reloads the browser on changes. Use --port to change the port.

See Getting Started for the writing workflow.

Building and publishing

CommandWhat it does
buildBuilds the static site into the output folder, dist by default.
deployDeploys an already-built site to the configured target.
publishBuilds, deploys, syndicates, then rebuilds and redeploys if syndication added links.
syndicatePublishes pending posts to configured syndication providers without deploying.

See Deployment and Syndication for provider setup.

Checks

CommandWhat it does
doctorChecks the whole site setup and reports anything missing.
requirementsPrints the environment variable names your publishing and syndication setup needs.

What doctor checks

doctor looks at everything a publish depends on:

  • inkstead-writer.json is present and the site configuration loads
  • the posts, pages and media folders exist
  • .env is present, and every environment variable your publishing target and syndication providers need is set
  • publishing target settings, such as the Cloudflare Worker name or the Netlify variables
  • the ./inkstead-writer wrapper is present, executable and current
  • generated CI workflows match Inkstead Writer's current template and run the wrapper
  • all posts load without content errors

It ends with a summary of passes, warnings and blocking issues. When it suggests ./inkstead-writer migrate, running that brings generated files up to date.

Themes

CommandWhat it does
theme ejectCopies the default templates into your theme folder. --force overwrites existing files.
theme checkChecks templates without building the site.
theme formatFormats templates. --check reports differences without writing.
theme language-serverRuns the Plume language server for editor integrations.

See Themes for details.

Maintenance

CommandWhat it does
updateUpdates the site to the latest Inkstead Writer release, or a specific one with --to <version>. --check only reports, --dry-run previews the migration.
migrateApplies migrations for the version already recorded in the site.
cache listLists downloaded binaries.
cache cleanPrunes downloaded binaries. --dry-run previews.
versionPrints the Inkstead Writer version.

See Upgrading for how versions and migrations fit together.

Creating sites

CommandWhat it does
initCreates a new site interactively. Run inkstead-writer init --help to see the non-interactive options for publishing, CI, syndication and app connection setup.