# Part 60: Setting Up ESLint in Your Next.js Project: A Step-by-Step Guide

<figure><img src="https://159896965-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3LclXKUpANLoSt8DPdYV%2Fuploads%2FJK8G3Yjm1qHwjGSqwUcV%2F1675674296261.jpeg?alt=media&#x26;token=989182c4-9098-4bba-8dd9-52aeb4b0f941" alt=""><figcaption><p>[App] Image Optimization</p></figcaption></figure>

Ensuring the quality of your code is crucial in any development project, and ESLint is a powerful tool that can help you achieve this. ESLint analyzes your code to find potential issues and enforce coding standards. In this post, we'll walk through setting up ESLint in a Next.js project, enabling you to maintain clean and efficient code.

### Why Use ESLint?

ESLint helps identify problematic patterns or code that doesn’t adhere to certain style guidelines. It can catch errors early in the development process, saving time and reducing bugs. Next.js provides predefined ESLint rules that are tailored to its environment, helping you avoid common pitfalls.

### Installing ESLint

Let's start by installing ESLint and its Next.js-specific configuration. Open your terminal and run the following commands to add these packages to your development dependencies:

```bash
npm install --save-dev eslint eslint-config-next
```

These packages will provide the core ESLint functionality along with rules specific to Next.js.

### Understanding npm Audit Warnings

During installation, npm might report some "vulnerabilities." It's important to understand that these are potential vulnerabilities, not necessarily affecting your project. For instance, a reported vulnerability might relate to a package like "semver" used by ESLint, which in this context, poses no risk because ESLint is only used during development and not in production.

### Configuring ESLint

Next, let's configure ESLint by creating a configuration file named `.eslintrc.json` in the root of your project. This file will extend Next.js's core web vitals rules:

```json
{
  "extends": "next/core-web-vitals"
}
```

This setup ensures that ESLint checks your code against Next.js best practices.

### Adding a Lint Script

To make linting more convenient, add a script to your `package.json` to run ESLint checks. Modify your `package.json` to include the following:

```json
"scripts": {
  "lint": "next lint"
}
```

With this script in place, you can simply run `npm run lint` in your terminal to analyze your code for potential issues.

### Using ESLint in Visual Studio Code

For an even smoother experience, you can install the ESLint extension for Visual Studio Code. This extension provides real-time feedback directly in your editor, highlighting issues as you code. Search for the ESLint extension in the Visual Studio Code marketplace and install the official one developed by Microsoft.

### Addressing ESLint Warnings

Once ESLint is set up, running `npm run lint` might show warnings about using standard HTML `img` tags, suggesting the use of the Next.js `Image` component instead. This is to optimize image loading and improve performance. These will also appear directly in Visual Studio Code if you have the ESLint extension installed.

### Conclusion

Setting up ESLint in your Next.js project is a straightforward process that brings immense benefits in terms of code quality and maintainability. By following the steps outlined above, you can ensure that your code adheres to best practices and is free from common errors. In future posts, we'll explore how to address specific warnings, like optimizing images with the Next.js `Image` component, to further enhance your application's performance. Happy coding!
