eslint-plugin-spaced
v1.0.0
Published
An ESLint plugin enforcing strict spacing rules based on custom spaced formatting guidelines.
Maintainers
Readme
eslint-plugin-spaced
A strict spacing‑rules ESLint plugin implementing the Spaced Formatting Rules and Allman brace style.
This plugin provides fully custom operator‑spacing behavior
- Parenthesis/bracket/braces spacing
- Comma/colon handling
- Restrictions around the
_identifier for top-level variables
All based on the formatting rules provided in
./docs/SPACED_FORMATTING_RULES.md
Table of Contents
Features
Operator & Symbol Spacing
- All major operators (
+,-,*,/,%,=,==,===,!==,<,<=, etc.) - Parentheses
() - Brackets
[] - Braces
{} - Commas and colons
Each must have at least one space before and after, unless explicitly excluded.
Allman Brace Style
All opening braces must be placed on their own line:
function demo ( )
{
console.log ( "Hello" );
}This applies to:
- Functions
- Classes
- Conditionals (
if,for,while, etc.)
Internal Underscore Variable Rule
_ may only be used for internal/local variables — not top‑level identifiers or top‑level parameters.
📦 Installation
npm install eslint-plugin-spaced --save-devOr using Yarn:
yarn add eslint-plugin-spaced --dev🛠️ Usage
Add the plugin to your ESLint configuration:
eslint.config.mjs
{
plugins:
{
spaced: spacedPlugin
},
rules:
{
"spaced/spaced-spacing": "error",
"spaced/spaced-allman-braces": "error",
"spaced/spaced-internal-underscore": "warn"
}
}This enables all rules with recommended settings:
"spaced/spaced-spacing"→ error"spaced/spaced-allman-braces"→ error"spaced/spaced-internal-underscore"→ warn
🔍 Rule Overview
spaced-spacing
Global scanner enforcing:
- Spacing before & after all operators
- Spacing for parentheses, brackets, braces
- Special handling for colons & commas
- Logical exclusion rules for unary operators
spaced-allman-braces
- Places all
{on the next line. - Automatically applies indentation via ESLint’s auto‑fix.
spaced-internal-underscore
Reports:
- Top‑level
const _ = ... - Top‑level function parameters named
_
Allows:
- Internal/local usage of
_
📁 Directory structure
eslint-plugin-spaced/
├── package.json
├── README.md
├── SPACED_FORMATTING_RULES.md
├── src/
│ ├── index.js
│ ├── utils/
│ │ └── tokens.js
│ └── rules/
│ ├── spaced-spacing.js
│ ├── spaced-allman-braces.js
│ └── spaced-internal-underscore.js
└── test/ (optional)📄 License
MIT © Justin D. Byrne
🤝 Contributions
Feel free to open an issue or submit a pull request for new spacing rules, enhancements, or bug fixes.
