Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time


Contributions are always welcome, no matter how large or small. Before contributing, please read the code of conduct.

For details on contributing to documentation, see Website Directory Readme.


Install Node.js (LTS) and yarn on your system.

Install dependencies

Only required on the first run, subsequent runs can use yarn start to both bootstrap and run the development server.

git clone
cd netlify-cms
yarn bootstrap

Run locally

yarn start

Available scripts


Bootstraps the monorepo.

yarn bootstrap


Watches all CMS packages and transpiles them on change.

yarn watch


Starts the development server. This task runs both the bootstrap and watch scripts.

yarn start


Removes all of the CMS package dist directories.

yarn clean


Runs the clean script and removes all the node_modules from the CMS packages.

yarn reset


Runs the clean script and builds the CMS packages.

yarn build


Runs the build and build-preview scripts in each package and serves the resulting build locally.

yarn build-preview


Runs linting and Jest tests.

yarn test


Runs linting, Jest, and Cypress tests.

yarn test:all


Runs Cypress e2e tests.

yarn test:e2e


Runs Cypress e2e tests on watch mode with an open instance of Chrome.

yarn test:e2e:dev


Formats code and docs according to our style guidelines.

yarn format

Pull Requests

We actively welcome your pull requests!

If you need help with Git or our workflow, please ask in our community chat. We want your contributions even if you're just learning Git. Our maintainers are happy to help!

Netlify CMS uses the Forking Workflow + Feature Branches. Additionally, PR's should be rebased on master when opened, and again before merging.

  1. Fork the repo.
  2. Create a branch from master. If you're addressing a specific issue, prefix your branch name with the issue number.
  3. If you've added code that should be tested, add tests.
  4. If you've changed APIs, update the documentation.
  5. Run yarn test and ensure the test suite passes.
  6. Use yarn format to format and lint your code.
  7. PR's must be rebased before merge (feel free to ask for help).
  8. PR should be reviewed by two maintainers prior to merging.


yarn start spawns a development server and uses dev-test/config.yml and dev-test/index.html to serve the CMS. In order to debug a specific issue follow the next steps:

  1. Replace dev-test/config.yml with the relevant config.yml

  2. Change the content of dev-test/index.html to:

<!DOCTYPE html>
    <meta charset="utf-8" />
    <title>Netlify CMS</title>
    <script src="dist/netlify-cms.js"></script>
    <!-- <script>
      // this is the place to add CMS customizations if you need to, e.g.
      CMS.registerPreviewTemplate('posts', PostPreview);
    </script> -->
  1. Run yarn start
  2. Open http://localhost:8080/ in the browser and you should have access to the CMS

Debugging Git Gateway

When debugging the CMS with Git Gateway you must:

  1. Have a Netlify site with Git Gateway and Netlify Identity enabled. An easy way to create such a site is to use a template, for example the Gatsby template

  2. Tell the CMS the URL of your Netlify site using a local storage item. To do so:

    1. Open http://localhost:8080/ in the browser
    2. Write the below command and press enter: localStorage.setItem('netlifySiteURL', '')
    3. To be sure, you can run this command as well: localStorage.getItem('netlifySiteURL')
    4. Refresh the page
    5. You should be able to log in via your Netlify Identity email/password


By contributing to Netlify CMS, you agree that your contributions will be licensed under its MIT license.