---
title: Developer guide
layout: doc
---

# Developer Guide

This guide is intended for those who wish to:

* Contribute code to ESLint
* Create their own rules for ESLint

In order to work with ESLint as a developer, it's recommended that:

* You know JavaScript, since ESLint is written in JavaScript.
* You have some familiarity with Node.js, since ESLint runs on it.
* You're comfortable with command-line programs.
* You understand unit tests and why they're important.

If that sounds like you, then continue reading to get started.

## Section 1: Get the [Source Code](source-code.html)

Before you can get started, you'll need to get a copy of the ESLint source code. This section explains how to do that and a little about the source code structure.

## Section 2: Set up a [Development Environment](development-environment.html)

Developing for ESLint is a bit different than running it on the command line. This section shows you how to set up a development environment and get you ready to write code.

## Section 3: Run the [Unit Tests](unit-tests.html)

There are a lot of unit tests included with ESLint to make sure that we're keeping on top of code quality. This section explains how to run the unit tests.

## Section 4: [Working with Rules](working-with-rules.html)

You're finally ready to start working with rules. You may want to fix an existing rule or create a new one. This section explains how to do all of that.

## Section 5: [Working with Plugins](working-with-plugins.html)

You've developed library-specific rules for ESLint and you want to share it with the community. You can publish an ESLint plugin on npm.

## Section 6: [Node.js API](nodejs-api.html)

If you're interested in writing a tool that uses ESLint, then you can use the Node.js API to get programmatic access to functionality.

## Section 7: [Contributing](contributing/)

Once you've made changes that you want to share with the community, the next step is to submit those changes back via a pull request.

## Section 8: [Governance](governance.html)

After you've made several contributions, you might be eligible to be a Committer or Reviewer. Learn what that means for you and your involvement in the project.
