eslint-cdk-plugin
インストール
以下のコマンドを実行してインストールします。
sh
npm install -D eslint-cdk-plugin
sh
yarn add -D eslint-cdk-plugin
sh
pnpm install -D eslint-cdk-plugin
eslint の設定
eslint.config.mjs
を以下のように記述します。
🚨 このプラグインは FlatConfig のみをサポートしています。
❓ FlatConfig とは?
❓ FlatConfig とは?
🚨 このプラグインは typescript の型情報を使う為 typescript-eslint との併用が必要になります。
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
は、次のように書くこともできます
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,
},
});
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
は次のように書くこともできます
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,
},
});
ルールのカスタマイズ
ルールをカスタマイズしたい場合は、eslint.config.mjs
を以下のように記述します。
(CJS の場合は eslint.config.cjs
を使用し、CommonJS の記法で記述します)
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",
},
},
];