Extension Details

- ESLint Starlight Edition
- by Eric Sorenson
- 2 Recent Installs | 2 Total Installs
- Integrates ESLint into Nova for JavaScript and TypeScript linting
- Repository
- Bug Reports
-
Read & Write Files
-
Launch Subprocesses
-
This extension is allowed to:
Readme
Nova ESLint Starlight Edition
Integrates ESLint into Nova for JavaScript and TypeScript linting.
Features
- Real-time linting for JavaScript, TypeScript, JSX, and TSX files
- Displays errors and warnings inline as you code
- Lint on save (default) or as you type
- Auto-fix on save - automatically applies ESLint fixes when saving
- Automatically detects ESLint configuration in your project
- Respects
.eslintignoreand ignore patterns - Works with ESLint plugins (React, TypeScript, Vue, etc.)
- Optimized performance with stdin linting (no temp files)
Requirements
ESLint must be installed in your project:
npm install --save-dev eslint
or
yarn add --dev eslint
This extension uses the ESLint installed in your project's node_modules, ensuring consistency with your team's configuration.
Getting Started
- Install ESLint in your project (see above)
- Create an ESLint configuration file (e.g.,
eslint.config.js) - Open a JavaScript or TypeScript file
- Errors and warnings will appear inline
Creating an ESLint Configuration
If you don't have an ESLint configuration yet:
npm init @eslint/config
Or create eslint.config.js manually:
export default [
{
files: ["**/*.js"],
rules: {
"semi": ["error", "always"],
"quotes": ["error", "double"]
}
}
];
Configuration
Extension Preferences
Open Nova Preferences � Extensions � ESLint:
- Enable ESLint: Turn linting on or off globally
- Lint on Save: Run ESLint when saving files (recommended)
- Lint on Change: Run ESLint as you type (may impact performance)
- Fix on Save: Automatically apply ESLint fixes when saving files
Workspace Preferences
Project-specific settings (stored in .nova/Configuration.json):
- ESLint Executable: Custom path to ESLint (e.g.,
node_modules/.bin/eslint) - Config File: Custom ESLint config file path (e.g.,
.eslintrc.custom.js)
How It Works
The extension:
- Detects when you open JavaScript/TypeScript files
- Finds ESLint in your project's
node_modules - Runs ESLint with your project's configuration
- Displays issues inline in the editor
ESLint runs from your workspace root, so it will find configuration files and respect ignore patterns just like running npx eslint from the command line.
Troubleshooting
"ESLint Not Found" Error
Make sure ESLint is installed in your project:
npm install --save-dev eslint
The extension looks for ESLint in:
1. The path specified in workspace preferences
2. node_modules/.bin/eslint
3. node_modules/eslint/bin/eslint.js
No Issues Appearing
Check that:
- ESLint is installed (node_modules/.bin/eslint exists)
- You have an ESLint configuration file (eslint.config.js, .eslintrc.*)
- The extension is enabled (Preferences � Extensions � ESLint)
- The file type is supported (JavaScript, TypeScript, JSX, TSX)
Configuration Errors
If you see configuration errors:
1. Test ESLint from the command line: npx eslint yourfile.js
2. Fix any configuration issues in eslint.config.js
3. Reload the extension or restart Nova
Supported File Types
- JavaScript (
.js,.mjs,.cjs) - TypeScript (
.ts,.mts,.cts) - JSX (
.jsx) - TSX (
.tsx)
Performance Tips
- Use "Lint on Save" instead of "Lint on Change" for better performance
- Configure ESLint to ignore large files or directories
- Use ESLint's cache feature in your project:
npx eslint --cache
Known Limitations
- ESLint must be installed locally in each project (this ensures consistency with your project's configuration)
Feedback
Report issues or request features at:
https://github.com/esorenson/nova-eslint/issues
License
MIT
Release Notes
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.0]
Added
- Initial development release
- ESLint integration for JavaScript, TypeScript, JSX, and TSX files
- Real-time linting with inline error and warning display
- Lint on save (default) or lint on change modes
- Fix on save - automatically applies ESLint fixes when saving files
- Automatic ESLint executable detection in project node_modules
- Support for custom ESLint executable paths
- Support for custom ESLint configuration file paths
- User-friendly error messages when ESLint is not found
- Configuration error notifications
- Debounced linting (300ms) for better performance
- Respects ESLint configuration and ignore patterns
- Minimum runtime version requirement (Nova 11.0+)
Performance Optimizations
- Uses
--stdinto pass content directly to ESLint (eliminates temp file I/O) - Cached severity mapping to avoid object recreation
- Cached config path resolution
- Duplicate lint prevention with active lints tracking
Configuration Options
- Global: Enable/disable ESLint, lint on save, lint on change, fix on save
- Workspace: Custom ESLint executable path, custom config file path
Code Quality
- Comprehensive test suite with 62 passing tests
- ~95% line coverage, ~94% branch coverage
- ESLintRunner: 87.88% line coverage
- Tests cover process execution, ESLint discovery, error handling, exit codes, stdin/stdout, and timeouts
- Clean code with ESLint validation
- Modular architecture with separate provider and runner components
- Proper error handling and user notifications
- Magic strings extracted to constants for better maintainability
Known Limitations
- ESLint must be installed locally in each project