Next.js Codemods
Codemods are transformations that run on your codebase programmatically. This allows for a large amount of changes to be applied without having to manually go through every file.
npx @next/codemod <transform> <path>
transform
- name of transform, see available transforms below.path
- files or directory to transform--dry
Do a dry-run, no code will be edited--print
Prints the changed output for comparison
Transforms anonymous components into named components to make sure they work with Fast Refresh.
For example
Transforms into:
export default function MyComponent() {
return <div>Hello World</div>
}
Usage
Go to your project
cd path-to-your-project/
Run the codemod:
npx @next/codemod name-default-component
Transforms the withAmp
HOC into Next.js 9 page configuration.
For example:
// After
export default function Home() {
return <h1>My AMP Page</h1>
}
export const config = {
amp: true,
}
Usage
Go to your project
npx @next/codemod withamp-to-config
Transforms the deprecated automatically injected url
property on top level pages to using withRouter
and the property it injects. Read more here:
For example:
// To
import React from 'react'
import { withRouter } from 'next/router'
export default withRouter(
class extends React.Component {
render() {
const { pathname } = this.props.router
return <div>Current pathname: {pathname}</div>
}
}
)
This is just one case. All the cases that are transformed (and tested) can be found in the __testfixtures__
directory.
Usage
Go to your project
cd path-to-your-project/
Run the codemod: