<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ren Yamanashi</title>
    <description>The latest articles on DEV Community by Ren Yamanashi (@ren-yamanashi).</description>
    <link>https://dev.to/ren-yamanashi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3602214%2Fcb7668a5-c006-47b5-8ff0-7f721218f38d.jpeg</url>
      <title>DEV Community: Ren Yamanashi</title>
      <link>https://dev.to/ren-yamanashi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ren-yamanashi"/>
    <language>en</language>
    <item>
      <title>Introducing ESLint to AWS CDK Projects</title>
      <dc:creator>Ren Yamanashi</dc:creator>
      <pubDate>Mon, 10 Nov 2025 14:36:43 +0000</pubDate>
      <link>https://dev.to/ren-yamanashi/introducing-eslint-to-aws-cdk-projects-2745</link>
      <guid>https://dev.to/ren-yamanashi/introducing-eslint-to-aws-cdk-projects-2745</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this article, I'll show you how to introduce ESLint to your AWS CDK project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ℹ️ &lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; This article is targeted at CDK projects written in TypeScript.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What is ESLint?
&lt;/h2&gt;

&lt;p&gt;First, what exactly is ESLint?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eslint.org/" rel="noopener noreferrer"&gt;ESLint&lt;/a&gt; is a tool that analyzes JavaScript and TypeScript code to detect simple syntax errors and code that violates coding standards.&lt;/p&gt;

&lt;p&gt;By using this tool, you can unify coding standards (writing style) among team members.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Installing ESLint
&lt;/h2&gt;

&lt;p&gt;Let me walk you through the steps to introduce ESLint to your CDK project.&lt;/p&gt;

&lt;p&gt;First, run the following command to install the necessary packages&lt;br&gt;
(You'll install ESLint and the TypeScript plugin for ESLint)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# npm&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; eslint typescript-eslint

&lt;span class="c"&gt;# yarn&lt;/span&gt;
yarn add &lt;span class="nt"&gt;-D&lt;/span&gt; eslint typescript-eslint

&lt;span class="c"&gt;# pnpm&lt;/span&gt;
pnpm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; eslint typescript-eslint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Configuring package.json
&lt;/h2&gt;

&lt;p&gt;Next, add a lint command to the &lt;code&gt;scripts&lt;/code&gt; in &lt;code&gt;package.json&lt;/code&gt; so that you can run ESLint commands from the terminal&lt;br&gt;
(The &lt;code&gt;--fix&lt;/code&gt; option applies automatic fixes.)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;// package.json
{
  "scripts": {
&lt;span class="gi"&gt;+   "lint": "eslint .",
+   "lint:fix": "eslint . --fix"
&lt;/span&gt;  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Creating the ESLint Configuration File
&lt;/h2&gt;

&lt;p&gt;Next, create &lt;code&gt;eslint.config.mjs&lt;/code&gt; in the project root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;eslint&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@eslint/js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;eslint/config&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;tsEslint&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;typescript-eslint&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="c1"&gt;// Apply ESLint recommended settings&lt;/span&gt;
  &lt;span class="nx"&gt;eslint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;tsEslint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Target TypeScript files under lib and bin directories&lt;/span&gt;
    &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lib/**/*.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bin/*.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;languageOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;parserOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;projectService&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;project&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./tsconfig.json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
    &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="c1"&gt;// Specify files and directories to ignore&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;ignores&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cdk.out&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node_modules&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;*.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Installing Editor Extensions
&lt;/h2&gt;

&lt;p&gt;Finally, install the extension to visualize code that violates ESLint rules in your editor (for VSCode).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint" rel="noopener noreferrer"&gt;ESLint - Visual Studio Marketplace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And, add the following to &lt;code&gt;.vscode/settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;// .vscode/settings.json
{
&lt;span class="gi"&gt;+ "editor.defaultFormatter": "dbaeumer.vscode-eslint",
+ "eslint.useFlatConfig": true,
&lt;/span&gt; ...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, the basic setup is complete&lt;/p&gt;




&lt;h2&gt;
  
  
  Verification
&lt;/h2&gt;

&lt;p&gt;Now that the basic setup is complete, let's verify it works with the following steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Include code that violates rules in a file under the lib directory, like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// lib/my-stack.ts&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Run the following command to verify that the relevant code triggers an error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# npm&lt;/span&gt;
npm run lint

&lt;span class="c"&gt;# yarn&lt;/span&gt;
yarn lint

&lt;span class="c"&gt;# pnpm&lt;/span&gt;
pnpm lint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Troubleshooting
&lt;/h3&gt;

&lt;p&gt;Here are solutions to common issues you might encounter when setting up ESLint.&lt;/p&gt;

&lt;h4&gt;
  
  
  Case1. ESLint Errors appear in terminal but not in editor
&lt;/h4&gt;

&lt;p&gt;If you encounter this issue, reviewing the extension version or reloading (or restarting) the editor might be effective (since this is an editor-related issue).&lt;/p&gt;

&lt;h4&gt;
  
  
  Case2. No ESLint errors appear in terminal
&lt;/h4&gt;

&lt;p&gt;If you encounter this issue, running &lt;code&gt;npm run lint --debug&lt;/code&gt; to check if ESLint (or a specific ESLint rule) is functioning correctly may provide clues for resolution.&lt;/p&gt;

&lt;p&gt;For more details, please refer to the following documentation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eslint.org/docs/latest/use/configure/debug" rel="noopener noreferrer"&gt;https://eslint.org/docs/latest/use/configure/debug&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Customizing Rules
&lt;/h2&gt;

&lt;p&gt;In the &lt;code&gt;eslint.config.mjs&lt;/code&gt; above, I adopted the recommended rules.&lt;br&gt;
If there are &lt;strong&gt;rules you don't want to trigger errors&lt;/strong&gt; or &lt;strong&gt;rules not included but you want to trigger errors&lt;/strong&gt;, you can solve this by customizing ESLint rules.&lt;/p&gt;
&lt;h3&gt;
  
  
  Changing Rules
&lt;/h3&gt;

&lt;p&gt;For example, if you don't want errors for "unused variables," modify the configuration file as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;// eslint.config.mjs
&lt;span class="p"&gt;import eslint from "@eslint/js";
import { defineConfig } from "eslint/config";
import tsEslint from "typescript-eslint";
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="p"&gt;export default defineConfig(
&lt;/span&gt;    // omitted
    rules: {
&lt;span class="gi"&gt;+     "no-unused-vars": "off",
+     "@typescript-eslint/no-unused-vars": "off"
&lt;/span&gt;    },
  },
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Introducing Plugins
&lt;/h3&gt;

&lt;p&gt;ESLint has a convenient plugin for CDK called &lt;code&gt;eslint-plugin-awscdk&lt;/code&gt;, which allows you to apply the following rules:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eslint-plugin-awscdk.dev" rel="noopener noreferrer"&gt;eslint-plugin-awscdk.dev&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Naming Convention Rules
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Included in Recommended Rules&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Construct constructor properties should have 'scope, id' or 'scope, id, props'&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Don't add suffixes like "Construct" or "Stack" to Construct IDs&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Don't name Construct IDs after parent Construct names&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Don't use variables in Construct IDs&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write Construct IDs in PascalCase&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Construct Props should be in the format &lt;code&gt;${ConstructName}Props&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Security Rules
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Included in Recommended Rules&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Props (Interface) properties should have "readonly"&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Construct public variables should have "readonly"&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Don't specify Construct type for Props properties&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Don't specify Construct type for Construct public properties&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Always pass &lt;code&gt;this&lt;/code&gt; to the second argument (&lt;code&gt;scope&lt;/code&gt; property) of Construct constructor&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Module Structure Rules
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Included in Recommended Rules&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Don't call modules in private directories from outside&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Documentation Rules
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Included in Recommended Rules&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Write JSDoc for Props (Interface) properties and Construct public properties&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write &lt;code&gt;@default&lt;/code&gt; JSDoc for optional Props (Interface) properties&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Plugin Installation Steps
&lt;/h3&gt;

&lt;p&gt;Here's how to install &lt;code&gt;eslint-plugin-awscdk&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Install the plugin&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# npm&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; eslint-plugin-awscdk

&lt;span class="c"&gt;# yarn&lt;/span&gt;
yarn add &lt;span class="nt"&gt;-D&lt;/span&gt; eslint-plugin-awscdk

&lt;span class="c"&gt;# pnpm&lt;/span&gt;
pnpm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; eslint-plugin-awscdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Update eslint.config.mjs&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;// eslint.config.mjs
&lt;span class="p"&gt;import eslint from "@eslint/js";
import { defineConfig } from "eslint/config";
import tsEslint from "typescript-eslint";
&lt;/span&gt;&lt;span class="gi"&gt;+import cdkPlugin from "eslint-plugin-awscdk";
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="p"&gt;export default defineConfig(
&lt;/span&gt;  // Apply ESLint recommended settings
  eslint.configs.recommended,
  ...tsEslint.configs.recommended,
  {
    // Target ts files under lib and bin directories
    files: ["lib/**/*.ts", "bin/*.ts"],
&lt;span class="gi"&gt;+   extends: [cdkPlugin.configs.recommended],
&lt;/span&gt;    // ...other settings
  },
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, I introduced how to set up ESLint in CDK projects.&lt;/p&gt;

&lt;p&gt;By introducing ESLint, you can expect to improve code quality and enhance team development efficiency.&lt;br&gt;
In particular, by using &lt;code&gt;eslint-plugin-awscdk&lt;/code&gt;, you can automatically check CDK-specific best practices.&lt;/p&gt;

&lt;p&gt;Master ESLint and enjoy comfortable CDK development!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://eslint.org/docs/latest/" rel="noopener noreferrer"&gt;ESLint Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://typescript-eslint.io/getting-started/" rel="noopener noreferrer"&gt;typescript-eslint Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eslint-plugin-awscdk.dev/" rel="noopener noreferrer"&gt;eslint-plugin-awscdk Documentation&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cdk</category>
      <category>eslint</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
