@amedia/kragl
Kragl is Amedia's lint/format pipeline. It wraps ESLint, Prettier, Biome,
Browserslist, ls-lint, lockfile-lint, and Jest behind a single CLI, with
auto-discovery of installed runners and a one-shot config installer.
This package is @amedia/kragl-cli with the ESLint and
Prettier runners included. Projects that use neither, e.g. with
Biome, install @amedia/kragl-cli instead.
Install
npm init @amedia/kragl@latest
@amedia/create-kragl installs kragl, writes the config
files and adds the scripts below. To do it by hand:
npm install --save-dev @amedia/kragl
Add scripts to package.json:
{
"scripts": {
"lint": "kragl lint",
"lint:fix": "kragl lint --fix",
"lint:format": "kragl format"
}
}
Use
Generate the standard eslint.config.js and prettier.config.js in the
project root, along with the config files of any other installed tools that
have one:
npx kragl install
To write only one file, pass a flag:
npx kragl install --eslint
npx kragl install --prettier
npx kragl install --prettier-base # inlines @amedia/prettier-config-base
kragl install -h lists the flags of the installed tools.
In a Svelte project, prettier.config.js exports svelte from
@amedia/kragl/prettier-config instead, which adds the Svelte plugin.
The installer produces:
// prettier.config.js
import prettierConfig from '@amedia/kragl/prettier-config';
export default prettierConfig;
// eslint.config.js
import { eslintConfig } from '@amedia/kragl/eslint-config';
export default [...eslintConfig({ typescript: true, react: true })];
The eslintConfig toggles (typescript, svelte, react, vitest, jest) are
filled in from what the project uses: the matching packages in package.json
(or a parent package.json up to the repository root), and tsconfig.json
for TypeScript. A project with none of them gets a plain eslintConfig().
Notes
Requires Node 22+. Optional runners (Biome, Browserslist, Jest (deprecated), ls-lint,
lockfile-lint) are picked up automatically when their @amedia/kragl-*
package is installed alongside kragl. See docs/ for the
architecture overview.