lightship-cli
v1.0.2
Published
Static linter for built HTML output (a11y / SEO / performance) that fails your CI build on problems. Rust-powered, no browser.
Downloads
97
Maintainers
Readme
lightship-cli 🛳️
Static linter for HTML — your built output and your dev sources — any framework (Astro, Vite, Next, SvelteKit, Vue, Svelte, Hugo, Jekyll, hand-written static sites…).
Lightship analyzes your .html files, without launching a browser, and
fails your build (non-zero exit code) when it finds accessibility, SEO or
performance problems. Point it at your build output (dist/, build/, out/,
_site/…) for the classic CI check, or run it directly on your
.vue/.svelte/.astro/.jsx/.tsx/.html sources so findings land on the
code you actually edit, with exact line/column (--mode source; --mode both
does both at once and is the default when run with no arguments).
Powered by a Rust core; this npm package ships a prebuilt binary for your platform — no Rust toolchain required.
Install
npm install -g lightship-cli
# or, one-off:
npx lightship-cli distUsage
lightship [OPTIONS] [FOLDER]FOLDER— folder to scan recursively (default: auto-detected build output and/or sources).--mode <build|source|both>— what to analyze (default: auto-detected).-q, --quiet— print only the summary line.-h, --help,-V, --version.
Exit code: 0 if no errors, 1 if at least one finding has severity Error.
In CI
- run: npm run build
- run: npx lightship-cli dist # exits 1 on Error → the job failsWhat it checks
| Rule | Severity | Checks |
|------|----------|--------|
| img-alt | Error | every <img> has an alt attribute |
| html-lang | Error | <html> has a non-empty lang |
| title-present | Error | a non-empty <title> exists |
| duplicate-id | Error | ids are unique |
| meta-charset | Warn | <meta charset> is present |
| meta-viewport | Warn | responsive <meta name="viewport"> is present |
| meta-description | Warn | non-empty <meta name="description"> |
| img-dimensions | Warn | every <img> has width and height (avoids CLS) |
| a-no-text | Warn | every <a href> has an accessible name |
Supported platforms
Windows / macOS / Linux, on x64 and arm64. The right prebuilt binary is pulled
in automatically via npm optionalDependencies.
License
MIT
