Contributing
gonx is MIT licensed and developed on GitHub. Bug reports, feature requests, and pull requests are all welcome.
Development setup
Section titled “Development setup”This repo is a bun workspace with Nx. Clone it and install dependencies:
git clone https://github.com/naxodev/oss.git
cd oss
bun install
You need:
- Node.js 22+
- bun (package manager)
- Go — a stable release (for running e2e tests)
Running tests
Section titled “Running tests”Unit tests run on bun test. Run a single spec directly:
cd packages/gonx && bun test src/graph/static-analysis/parse-go-mod.spec.ts
Or run the whole project through Nx (each spec runs in its own bun process for mock isolation):
bunx nx test gonx
End-to-end tests spin up a local Verdaccio registry and install the published tarball into a generated workspace:
bunx nx e2e gonx-e2e
Linting and formatting
Section titled “Linting and formatting”bunx nx lint gonx
bunx nx format:check
bunx nx format:write
Opening a pull request
Section titled “Opening a pull request”-
Create a branch from
main. -
Make your changes, keeping commits focused.
-
Run lint, tests, and build before pushing:
bunx nx affected -t lint test build -
Open a PR with a clear description.
Commit messages
Section titled “Commit messages”Commits are validated by commitlint using Conventional Commits. Use the package scope:
feat(gonx): add new generator option
fix(gonx): resolve import edge case
docs(gonx): update executor reference
PR titles matter — squash-merge lands the PR title as the commit subject. Use
feat(gonx)!: ... for breaking changes.
Coding rules
Section titled “Coding rules”- All features or bug fixes must be covered by one or more unit tests.
- All public API methods must be documented.
Releasing
Section titled “Releasing”Releases are independent per project and published manually from a maintainer’s machine (the npm account requires 2FA for writes). See CONTRIBUTING.md for the full release workflow.
Next steps
Section titled “Next steps”- How static analysis works — understand the tree-sitter graph
- Plugin options — the plugin’s configuration surface
- Quick start — get familiar with gonx as a user