Skip to main content

Contributing

Thanks for trying to contribute or interesting.

You can contribute to:

Its purpose is all developers are able to better markup and fit each of diverse their projects. So we want you to contribute. Your thought leads to diversity.

Code contribution​

You need:

  • Node.js v24 or later (the exact version is pinned in .mise.toml; install mise and run mise install to match it)
  • Yarn 4.x (pinned in both .mise.toml and package.json#packageManager — bump them together; CI derives the sandbox Yarn version from the latter)

After cloning this repository, you can also install them through Docker.

When you wrote code then:

  • Format and lint code through yarn lint.
  • Check to build successfully through yarn build.
  • Test your code through yarn test (this also runs TypeScript type-checking on spec files).
  • Push to the topic branch and open a pull request.
  • Assign reviewer:
    • For the improved code: @yusukehirao
    • For plugins: @yusukehirao
    • For documents/website: @yusukehirao, @kagankan

nu-validator compatibility benchmark​

tests/external/ houses a local-only benchmark that compares markuplint with Nu Html Checker. It is not wired into CI. See tests/external/CLAUDE.md for the setup, command list, and the Docker / excluded-ids.json workflow.

Publishing the VS Code Extension​

The npm packages are published automatically from CI (npm trusted publisher). The VS Code extension, in contrast, is published manually after the core packages land. See vscode/CLAUDE.md for why stable and prerelease versions are distributed through different channels.

Publisher​

The extension is published under the markuplint publisher (Marketplace ID: markuplint.markuplint-vscode).

The legacy yusukehirao.vscode-markuplint listing was deleted from the Marketplace at the v5.0.0 release (see vscode/CLAUDE.md for why it could not simply be left deprecated).

yarn vscode:login runs vsce login markuplint, so the Azure DevOps Personal Access Token you authenticate with must have rights on the markuplint publisher.

Versioning​

All packages — including the VS Code extension — share a single version because Lerna is configured in non-independent mode. The extension version always matches the core version (e.g. 5.0.0, 5.0.0-rc.4).

Workflow​

Only stable versions (X.Y.Z without a prerelease suffix) are published to the Marketplace.

  1. Wait for the core packages to be published to npm by CI
  2. Pull the release tag locally (git pull --tags)
  3. (First time only) yarn vscode:login to authenticate with Marketplace
  4. Run yarn vscode:release

yarn vscode:package produces a local .vsix without publishing — use it for smoke-testing before running the publish command.

Valid modes accepted by vscode/scripts/install.mjs: package, release.

Reference​