- Node.js 22+ (use nvm:
nvm use) - pnpm 10+ (via corepack)
- VS Code 1.85.0+
# Install Node 22 (if using nvm)
nvm install
nvm use
# Enable pnpm
corepack enable
# Install dependencies
pnpm install
# Compile
pnpm run compile-
Open this project in VS Code
code . -
Start Watch Mode (optional, for live reloading)
pnpm run watch
-
Launch Extension Development Host
- Press
F5(or Run → Start Debugging) - A new VS Code window opens with the extension loaded
- Press
-
Test the Extension
- Open any TypeScript/JavaScript/Vue project in the Extension Development Host
- Click the LintMon icon in the Activity Bar (left sidebar)
- You'll see all diagnostics from your project
To test LintMon with a real project:
- Launch Extension Development Host (F5)
- In the new window: File → Open Folder
- Open a project with TypeScript or ESLint
- The LintMon sidebar will populate with diagnostics
- ✅ Full Project Scanning - Shows ALL files, not just open ones!
- ✅ View all diagnostics in sidebar
- ✅ Click diagnostic → jumps to file/line
- ✅ Badge counter shows error count
- ✅ Refresh button updates diagnostics
Open Settings → Extensions → LintMon → Scan Mode:
- full (default) - Scans ALL files in project using TypeScript & ESLint CLI
- openFiles - Only shows diagnostics from open files (faster, fallback mode)
F8- Next diagnosticShift+F8- Previous diagnostic
Open Settings → Extensions → LintMon → Group By:
- file - Group by file
- errorType - Group by error type/rule
- both - Dual hierarchy (file → error type)
LintMon auto-detects:
- Nuxt (checks
nuxt.config.ts/js) - Next.js (checks
next.config.js) - Vue (checks
vite.config.ts+vuepackage) - React (checks
vite.config.ts+reactpackage) - Angular (checks
angular.json) - NestJS (checks
nest-cli.json)
Check the Debug Console for: LintMon: Detected framework: [name]
LintMon finds:
- tsconfig.json (auto or custom path in settings)
- ESLint config (flat config or legacy formats)
Warnings appear if configs are not found.
- Set Breakpoints in
src/**/*.ts - F5 to launch
- Debug Console shows logs
- Ctrl+R to reload extension after changes (if using watch mode)
src/
├── extension.ts # Entry point
├── providers/
│ ├── diagnosticsProvider.ts # Collects diagnostics
│ └── treeViewProvider.ts # UI tree view
├── utils/
│ ├── configDetector.ts # Finds tsconfig/eslint configs
│ └── frameworkDetector.ts # Detects frameworks
└── types/
└── index.ts # TypeScript types
All settings are in package.json → contributes.configuration.
Test settings by:
- Extension Development Host → Preferences → Settings
- Search for "LintMon"
- Change settings and see live updates
Issue: Extension doesn't activate
- Check Debug Console for errors
- Ensure
out/directory exists (runpnpm compile)
Issue: No diagnostics shown
- Open a file with TypeScript/ESLint errors
- Check if file type is enabled in settings
- Verify tsconfig.json or eslint config exists
Issue: Badge not updating
- Save a file to trigger refresh
- Or click Refresh button manually
# Install vsce
pnpm add -g @vscode/vsce
# Package extension
vsce package
# Creates: lintmon-0.0.1.vsix- Test with different project types (Vue, React, Next.js)
- Test all grouping modes
- Test keyboard navigation
- Test with large projects (1000+ files)
- Test config detection warnings
See CLAUDE.md for architecture details.
MIT