/core-rules)
    * [ Governance ](/docs/latest/contribute/governance)
    * [ Report a Security Vulnerability ](/docs/latest/contribute/report-security-vulnerability)
  * [ Maintain ESLint ](/docs/latest/maintain/)
    * [ How ESLint is Maintained ](/docs/latest/maintain/overview)
    * [ Manage Issues and Pull Requests ](/docs/latest/maintain/manage-issues)
    * [ Review Pull Requests ](/docs/latest/maintain/review-pull-requests)
    * [ Manage Releases ](/docs/latest/maintain/manage-releases)
    * [ Working Groups ](/docs/latest/maintain/working-groups)

#  Set up a Development Environment

##  Table of Contents

  1. Step 1: Install Node.js 
  2. Step 2: Fork and Checkout Your Own ESLint Repository 
  3. Step 3: Add the Upstream Source 
  4. Step 4: Install the Yeoman Generator 
  5. Step 5: Run the Tests 
  6. Reference Information 
    1. Directory Structure 
    2. Workflow 
    3. Build Scripts 
      1. npm test 
      2. npm run lint 
      3. npm run webpack 

ESLint has a very lightweight development environment that makes updating code
fast and easy. This is a step-by-step guide to setting up a local development
environment that will let you contribute back to the project.

##  Step 1: Install Node.js

Go to [ https://nodejs.org/ ](https://nodejs.org/) to download and install the
latest stable version for your operating system.

Most of the installers already come with [ npm ](https://www.npmjs.com/) but
if for some reason npm doesn’t work on your system, you can install it
manually using the instructions on the site.

##  Step 2: Fork and Checkout Your Own ESLint Repository

Go to [ https://github.com/eslint/eslint ](https://github.com/eslint/eslint)
and click the “Fork” button. Follow the [ GitHub documentation
](https://help.github.com/articles/fork-a-repo) for forking and cloning.

Clone your fork:

    
    
    git clone https://github.com/<Your Github Username>/eslint
    
    
    1  
    

Once you’ve cloned the repository, run ` npm install ` to get all the
necessary dependencies:

    
    
    cd eslint
    npm install
    
    
    1  
    2  
    

You must be connected to the Internet for this step to work. You’ll see a lot
of utilities being downloaded.

**Note:** It’s a good idea to re-run ` npm install ` whenever you pull from
the main repository to ensure you have the latest development dependencies.

##  Step 3: Add the Upstream Source

The _upstream source_ is the main ESLint repository where active development
happens. While you won’t have push access to upstream, you will have pull
access, allowing you to pull in the latest code whenever you want.

To add the upstream source for ESLint, run the following in your repository:

    
    
    git remote add upstream git@github.com:eslint/eslint.git
    
    
    1  
    

Now, the remote ` upstream ` points to the upstream source.

##  Step 4: Install the Yeoman Generator

[ Yeoman ](https://yeoman.io) is a scaffold generator that ESLint uses to help
streamline development of new rules. If you don’t already have Yeoman
installed, you can install it via npm:

    
    
    npm install -g yo
    
    
    1  
    

Then, you can install the ESLint Yeoman generator:

    
    
    npm install -g generator-eslint
    
    
    1  
    

Please see the [ generator documentation
](https://github.com/eslint/generator-eslint) for instructions on how to use
it.

##  Step 5: Run the Tests

Running the tests is the best way to ensure you have correctly set up your
development environment. Make sure you’re in the ` eslint ` directory and run:

    
    
    npm test
    
    
    1  
    

The testing takes a few minutes to complete. If any tests fail, that likely
means one or more parts of the environment setup didn’t complete correctly.
The upstream tests always pass.

##  Reference Information

###  Directory Structure

The ESLint directory and file structure is as follows:

  * ` bin ` \- executable files that are available when ESLint is installed