Skip to content

Presets ​

A preset is a bundle of rules per tool, plus the dependencies to install and the keys it considers its own (managedKeys). Presets live inside LintSync itself — built in, or built once interactively and saved locally — never as separate npm packages, so npm update -g lintsync is how you get preset updates.

Built-in presets ​

All four ship today, and all four share the same base Prettier style: no semicolons, single quotes, trailingComma: 'all', printWidth: 100, tabWidth: 2.

vue-app ​

ESLint (flat config + @eslint/js + eslint-plugin-vue + typescript-eslint) + Prettier + Stylelint, for Vue/Nuxt applications. <script lang="ts">/<script setup lang="ts"> blocks in .vue files are wired directly to TypeScript's own parser via vue-eslint-parser, not through @vue/eslint-config-typescript — that package's withVueTs() helper returns a Promise, which doesn't fit a plain config array. Stylelint extends stylelint-config-standard-scss and stylelint-config-recommended-vue.

react-app ​

ESLint (flat config + @eslint/js + eslint-plugin-react + eslint-plugin-react-hooks + typescript-eslint) + Prettier + Stylelint, for React applications. eslint/@eslint/js are pinned to ^9 here specifically, because eslint-plugin-react hasn't published ESLint 10 support yet.

npm-lib ​

ESLint (flat config + @eslint/js + typescript-eslint) + Prettier, for library-style npm packages with no CSS — this preset doesn't define a Stylelint tool at all, so init never offers to install it. Stricter than the other presets: no-console and @typescript-eslint/no-unused-vars/no-explicit-any are errors instead of warnings, and it adds @typescript-eslint/explicit-module-boundary-types on top.

base ​

ESLint (flat config + @eslint/js + typescript-eslint) + Prettier + Stylelint (stylelint-config-standard) with mild, generic defaults, not tied to any stack. This is what interactive init's "pick tools individually" path uses.


All four include @eslint/js's own recommended config alongside typescript-eslint's — typescript-eslint's recommended config only disables the subset of @eslint/js's rules that TypeScript's compiler already checks better, it doesn't replace them, so real correctness rules with no TS-specific overlap (no-fallthrough, no-empty, array-callback-return, ...) need @eslint/js present too.

On top of these, you can build your own preset interactively (init → "Build and save a new custom preset" — see Init) and save it locally. It behaves exactly like a built-in preset from then on: same --preset <name> resolution, same preset-picker list, same manifest/sync behavior.

Listing saved presets ​

lintsync presets list lists locally-saved presets.

bash
lintsync presets list

--presets <path> ​

Path to the local presets store, if not the default — see Global config and storage.

--json ​

Machine-readable output.

Removing a saved preset ​

lintsync presets remove <name> deletes a locally-saved preset.

bash
lintsync presets remove my-team

--presets <path> ​

Path to the local presets store, if not the default.

--json ​

Machine-readable output.