Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/varanauskas/nexered
Support Next.js redirects in Cloudflare Pages
https://github.com/varanauskas/nexered
cloudflare cloudflare-pages next nextjs redirect redirects seo seo-optimization static-export static-site-generator
Last synced: about 12 hours ago
JSON representation
Support Next.js redirects in Cloudflare Pages
- Host: GitHub
- URL: https://github.com/varanauskas/nexered
- Owner: varanauskas
- License: mit
- Created: 2022-04-14T18:49:57.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-11-27T22:22:56.000Z (about 2 years ago)
- Last Synced: 2024-12-16T20:42:13.093Z (9 days ago)
- Topics: cloudflare, cloudflare-pages, next, nextjs, redirect, redirects, seo, seo-optimization, static-export, static-site-generator
- Language: TypeScript
- Homepage:
- Size: 41 KB
- Stars: 17
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NEXERED
Support Next.js redirects in your hosting provider
---
[Next.js redirects](https://nextjs.org/docs/api-reference/next.config.js/redirects)
defined in `next.config.js` do not work in static HTML exports.However, in many hosting providers (for example Cloudflare Pages) it is possible
to define a static redirect config (for example `_redirects` file).This package aims to parse existing `next.config.js` and automatically define
configuration for those third party hosting providers.## Get started
1. Install `nexered` using your package manager
```sh
yarn add nexered
```
or if you're using `npm`
```sh
npm install nexered
```2. Add `nexered` to the `postbuild` [(or the `post-` script of the static export script if it's named differently)](https://docs.npmjs.com/cli/v6/using-npm/scripts#pre--post-scripts) step in `package.json`
```diff
{
"scripts": {
"postbuild": "nexered --provider=cloudflare-pages"
}
}
```3. ...
4. Profit
## Supported providers
- [Cloudflare Pages](https://developers.cloudflare.com/pages/platform/redirects/)
Supports `:wildcards*` and `:slugs` and same status codes as next.js
Example:
```js
// next.config.js
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {
basePath: "/base-path",
async redirects() {
return [
{
source: '/old-page',
destination: '/new-page',
permanent: true,
},
{
source: '/old-wildcard/:path*',
destination: '/new-wildcard/:path*',
permanent: false
},
{
source: '/old-blog/:slug',
destination: '/new-blog/:slug',
permanent: true,
},
{
source: '/without-base-path',
destination: '/absolute-path',
basePath: false,
permanent: false,
},
{
source: '/custom-status-code',
destination: '/status-code-303',
statusCode: 303
}
];
},
};module.exports = nextConfig;
``````
// out/_redirects
/base-path/old-page /base-path/new-page 308
/base-path/old-wildcard/* /base-path/new-wildcard/:splat 307
/base-path/old-blog/:slug /base-path/new-blog/:slug 308
/without-base-path /absolute-path 307
/base-path/custom-status-code /base-path/status-code-303 303
```## Usage
```
nexered --p=cloudflare-pagesOptions:
--help Show help [boolean]
--version Show version number [boolean]
-p, --provider hosting provider type [required] [choices: "cloudflare-pages"]
-o `next export` output directory as described in
https://nextjs.org/docs/api-reference/next.config.js/exportPat
hMap#customizing-the-output-directory[string] [default: "out"]
--dir next project directory containing `next.config.js`
[string] [default: "."]
```