eslint-cdk-plugin
Install
Just run this:
sh
npm install -D eslint-cdk-plugin
sh
yarn add -D eslint-cdk-plugin
sh
pnpm install -D eslint-cdk-plugin
Setting eslint config
Write eslint.config.mjs
as follows:
🚨 This plugin only supports FlatConfig.
❓ What's FlatConfig?
❓ What's FlatConfig?
🚨 This plugin uses typescript type information and must be used in conjunction with typescript-eslint
When using ESM
js
// eslint.config.mjs
import eslintCdkPlugin from "eslint-cdk-plugin";
import tsEslint from "typescript-eslint";
export default [
...tsEslint.configs.recommended,
{
files: ["lib/**/*.ts", "bin/*.ts"],
languageOptions: {
parserOptions: {
projectService: true,
project: "./tsconfig.json",
},
},
// ✅ Add plugins
plugins: {
cdk: eslintCdkPlugin,
},
// ✅ Add rules (use recommended rules)
rules: {
...eslintCdkPlugin.configs.recommended.rules,
},
},
];
eslint.config.mjs
can also be written as follows
js
// eslint.config.mjs
import tsEslint from "typescript-eslint";
import eslintCdkPlugin from "eslint-cdk-plugin";
export default tsEslint.config({
files: ["lib/**/*.ts", "bin/*.ts"],
languageOptions: {
parser: tsEslint.parser,
parserOptions: {
projectService: true,
project: "./tsconfig.json",
},
},
extends: [...tsEslint.configs.recommended],
// ✅ Add plugins
plugins: {
cdk: eslintCdkPlugin,
},
// ✅ Add rules (use recommended rules)
rules: {
...eslintCdkPlugin.configs.recommended.rules,
},
});
When using CJS
js
// eslint.config.cjs
const eslintCdkPlugin = require("eslint-cdk-plugin");
const tsEslint = require("typescript-eslint");
module.exports = [
...tsEslint.configs.recommended,
{
files: ["lib/**/*.ts", "bin/*.ts"],
languageOptions: {
parserOptions: {
projectService: true,
project: "./tsconfig.json",
},
},
plugins: {
cdk: eslintCdkPlugin,
},
rules: {
...eslintCdkPlugin.configs.recommended.rules,
},
},
{
ignores: ["node_modules", "*.js"],
},
];
eslint.config.cjs
can also be written as follows
js
// eslint.config.cjs
const tsEslint = require("typescript-eslint");
const eslintCdkPlugin = require("eslint-cdk-plugin");
module.exports = tsEslint.config({
files: ["lib/**/*.ts", "bin/*.ts"],
languageOptions: {
parser: tsEslint.parser,
parserOptions: {
projectService: true,
project: "./tsconfig.json",
},
},
extends: [...tsEslint.configs.recommended],
// ✅ Add plugins
plugins: {
cdk: eslintCdkPlugin,
},
// ✅ Add rules (use recommended rules)
rules: {
...eslintCdkPlugin.configs.recommended.rules,
},
});
Customize rules
If you want to customize the rules, write eslint.config.mjs
as follows:
(For CJS, use eslint.config.cjs
and use CommonJS notation)
js
// eslint.config.mjs
import tsEslint from "typescript-eslint";
import eslintCdkPlugin from "eslint-cdk-plugin";
export default [
...tsEslint.configs.recommended,
{
files: ["lib/**/*.ts", "bin/*.ts"],
languageOptions: {
parserOptions: {
projectService: true,
project: "./tsconfig.json",
},
},
// ✅ Add plugins
plugins: {
cdk: eslintCdkPlugin,
},
// ✅ Add rules (use custom rules)
rules: {
"cdk/no-class-in-interface": "error",
"cdk/no-construct-stack-suffix": "error",
"cdk/no-parent-name-construct-id-match": "error",
},
},
];