https://github.com/lifespikes/apext
๐บ A simple CLI tool to manage and organize Next.js API routes.
https://github.com/lifespikes/apext
cli nextjs nodejs typescript
Last synced: 9 months ago
JSON representation
๐บ A simple CLI tool to manage and organize Next.js API routes.
- Host: GitHub
- URL: https://github.com/lifespikes/apext
- Owner: lifespikes
- License: mit
- Created: 2022-07-31T08:14:01.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-07T20:44:11.000Z (about 3 years ago)
- Last Synced: 2025-09-29T04:49:11.900Z (9 months ago)
- Topics: cli, nextjs, nodejs, typescript
- Language: TypeScript
- Homepage: http://apext.vercel.app
- Size: 784 KB
- Stars: 12
- Watchers: 3
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README


# APEXT
pronounced */eษชpekst/*
A simple CLI tool to manage and organize Next.js API routes.
Inspired by the [Laravel Artisan `route:list` Command](https://stillat.com/blog/2016/12/07/laravel-artisan-route-command-the-routelist-command)
# Install
#### On Mac via homebrew
```bash
brew install lifespikes/apext/apext
```
#### Via NPM
```bash
npm i -g apext
```
# API (Commands)
### 1. ๐ฏ `list`
**Place yourself on your Next.js root directory and run `apext list`**
#### Flags:
`--path` - **optional** (will output a specific path routes, `/api` is default)
#### Example:
```bash
apext list --path auth
```
#### Extra:
Display your route accepted http methods by adding the `// @methods` comment. Check the `๐ฏ create` command below.
```js
// my-route.ts
// @methods [GET, POST, PUT, DELETE]
// ...rest of the file
```
### 2. ๐ฏ `create`
Will create an API endpoint following a REST structure.
#### Argument:
`` - **required** (the name of your API endpoint)
#### Flags:
`--path` - **optional** (`/api` folder is default)
`--ts` - **optional** (`.js` file is generated by default)
#### Example:
```bash
apext create login --path auth --ts
```
#### Notes:
1. When stating a `--path` you can create nested directories like `path/nested-path`.
2. If a folder does not exists, APEXT will create the folder for you.
#### Output file example (Typescript):
```ts
import type { NextApiRequest, NextApiResponse } from 'next'
// APEXT methods comment ๐
// @methods [GET, POST, PUT, DELETE]
export default async function name(
req: NextApiRequest,
res: NextApiResponse
) {
switch (req.method) {
case 'GET':
case 'POST':
case 'PUT':
case 'DELETE':
default:
res.setHeader('Allow', [
'GET',
'POST',
'PUT',
'DELETE',
])
return res.status(405).end(`Method ${req.method} Not Allowed`)
}
}
```
# Config File
You can add an `apext.config.js` to your Next.js project root directory.
### Options:
| option | type | description |
|------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| tsContent | function | A function `(name: string) => string`. Takes one argument `name` and returns a string. It allows you to set up the content of the API route when just being created with the `create` command. |
| jsContent | function | A function `(name: string) => string` . Takes one argument `name` and returns a string. It allows you to set up the content of the API route when just being created with the `create` command. |
| typescript | boolean | If you are programming in Typescript you can set up this option and all API routes will be Typescript files without specifying the `--ts` flag. | | | | | | |
### Example of tsContent/jsContent
```js
module.exports = {
jsContent: (name) => `
export default async function ${name} (req, res) {
return res.status(200).json('Hello from Apext Config')
}
`
}
```