---
title: Introduction
---
import { Steps, LinkCard, Card, CardGrid } from '@astrojs/starlight/components';
`jscodeshift` is a toolkit for building and running codemods over multiple JavaScript or TypeScript files. It provides:
- A runner, which executes the provided transform for each file passed to it. It also outputs a summary of how many files have **not** been transformed.
- A wrapper around [recast](https://github.com/benjamn/recast), providing a different API. Recast is an AST-to-AST transform tool and also tries to preserve the style of original code
as much as possible.
## How does jscodeshift work?
1. **Parsing Code into AST**
First, jscodeshift takes your JavaScript code and converts it into an Abstract Syntax Tree (AST). An AST is a tree representation of your code where each node represents a different part of the code, like variables, functions, and expressions.
2. **Transforming the AST**
Using jscodeshift, you can navigate through the AST and apply transformations. For example, you can find all instances of a certain function and rename it or change its parameters.
3. **Generating Code from AST**
After transforming the AST, jscodeshift converts it back into JavaScript code. The result is your original code with the specified changes applied.
## Installation
Get jscodeshift from [npm](https://www.npmjs.com/package/jscodeshift):
```
$ npm install -g jscodeshift
```
This will install the runner as `jscodeshift`.
## Getting started