Skip to content

Linter

Terminal window
npm install -D @puruslang/linter

Or globally:

Terminal window
npm install -g @puruslang/linter
Terminal window
# Lint specific files
purus-lint src/main.purus
# Lint all files in a directory
purus-lint --directory src
# Lint using config.purus settings
purus-lint

When no files are specified, purus-lint reads config.purus and lints all files in the entry directory.

OptionAliasDescription
--directory <dir>-dLint all Purus files in the directory
--config <file>Path to config JSON file (.puruslint.json)
--help-hShow help
RuleDefaultDescription
no-varwarnAvoid var; use const or let
no-nilwarnUse null instead of nil
indent-sizewarn (2)Indentation must be a multiple of N spaces
no-trailing-whitespacewarnNo trailing whitespace
max-line-lengthoff (100)Maximum line length
consistent-namingwarn (kebab-case)Naming convention

Linter settings can be configured in config.purus alongside build settings:

-- Linter settings
const lint.no-var be ///warn///
const lint.indent-size be 2
const lint.max-line-length be ///off///

Alternatively, create .puruslint.json in your project root:

{
"no-var": { "severity": "error" },
"max-line-length": { "severity": "warn", "max": 80 }
}

config.purus takes priority. If no config.purus is found, .puruslint.json is used as a fallback.

const { lint } = require("@puruslang/linter");
const diagnostics = lint("var x be 42");
// [{ rule: "no-var", severity: "warn", line: 1, col: 1, message: "..." }]