
Security News
GitHub Actions Pricing Whiplash: Self-Hosted Actions Billing Change Postponed
GitHub postponed a new billing model for self-hosted Actions after developer pushback, but moved forward with hosted runner price cuts on January 1.
gatsby-codemods
Advanced tools
A collection of codemod scripts for use with JSCodeshift that help migrate to newer versions of Gatsby.
A collection of codemod scripts for use with JSCodeshift that help migrate to newer versions of Gatsby.
Note: Codemods are designed to rewrite your project's files. Ensure you have a backup before going any further.
There are two ways to run codemods on this package.
npx gatsby-codemods <codemod-name> <filepath>
filepath is not required and will default to the directory you're currently in.
Note that you cannot pass additional flags to this command. It will automatically run the codemod against file extensions js, jsx, ts, tsx and ignore the node_modules, .cache and public directories of your project.
npm install --global jscodeshift
npm install gatsby-codemods
jscodeshift -t node_modules/gatsby-codemods/transforms/global-graphql-calls.js my-project
Note that jscodeshift tries to match the formatting of your existing code, but you may need to use a tool like prettier to ensure consistency after running these codemods.
Structure of a jscodeshift call:
jscodeshift -t <codemod-script> <path>
codemod-script - path to the transform file, see available scripts belowpath - files or directory to transform, typically the path to your Gatsby project-d option for a dry-run and use -p to print the output for comparison--extensions option if your files have different extensions than .js (for example, --extensions js,jsx)sort-and-aggr-graphqlApply changes to the sort argument and aggregation's field argument as explained in the RFC: Change to sort and aggregation fields API.
See the Gatsby v4 to v5 migration guide for details on when to use this.
npx gatsby-codemods sort-and-aggr-graphql <filepath>
Example result:
{
- allMarkdownRemark(sort: { fields: [frontmatter___date], order: DESC }) {
+ allMarkdownRemark(sort: { frontmatter: { date: DESC } }) {
nodes {
...fields
}
}
}
global-graphql-callsAdd a graphql import to modules that use the graphql tag function without an import. This was supported in Gatsby v1 and deprecated for Gatsby v2.
See the Gatsby v1 to v2 migration guide for details on when to use this.
npx gatsby-codemods global-graphql-calls <filepath>
Example result:
import React from "react"
+ import { graphql } from "gatsby"
export default ({ data }) => (
<h1>{data.site.siteMetadata.title}</h1>
)
export const query = graphql`
query {
site {
siteMetadata {
title
}
}
}
`
import-linkImport Link from gatsby instead of gatsby-link and remove the gatsby-link import.
See the Gatsby v1 to v2 migration guide for details on when to use this.
npx gatsby-codemods import-link <filepath>
Example result:
- import Link from "gatsby-link"
+ import { Link } from "gatsby"
export default props => (
<Link to="/">Home</Link>
)
navigate-callsChange the deprecated navigateTo method from gatsby-link to navigate from the gatsby module.
See the Gatsby v1 to v2 migration guide for details on when to use this.
npx gatsby-codemods navigate-calls <filepath>
Example result:
import React from "react"
- import { navigateTo } from "gatsby-link"
+ import { navigate } from "gatsby"
// Don't use navigate with an onClick btw :-)
// Generally just use the `<Link>` component.
export default props => (
- <div onClick={() => navigateTo(`/`)}>Click to go to home</div>
+ <div onClick={() => navigate(`/`)}>Click to go to home</div>
)
rename-bound-action-creatorsRename boundActionCreators to actions. boundActionCreators has been deprecated in Gatsby v2
Note: Run this codemod only against files that use boundActionCreators instead of running it against a whole directory.
See the Gatsby v1 to v2 migration guide for details on when to use this.
npx gatsby-codemods rename-bound-action-creators <filepath>
Example result:
- exports.onCreateNode = ({ node, getNode, boundActionCreators }) => {
+ exports.onCreateNode = ({ node, getNode, actions }) => {
- const { createNodeField } = boundActionCreators
+ const { createNodeField } = actions
if (node.internal.type === `MarkdownRemark`) {
const slug = createFilePath({ node, getNode, basePath: `pages` })
createNodeField({
node,
name: `slug`,
value: slug,
})
}
}
FAQs
A collection of codemod scripts for use with JSCodeshift that help migrate to newer versions of Gatsby.
The npm package gatsby-codemods receives a total of 982 weekly downloads. As such, gatsby-codemods popularity was classified as not popular.
We found that gatsby-codemods demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
GitHub postponed a new billing model for self-hosted Actions after developer pushback, but moved forward with hosted runner price cuts on January 1.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.