apext
v0.3.7
Published
A simple CLI tool to manage and organize Next.js API routes.
Downloads
2
Maintainers
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
Install
On Mac via homebrew
brew install lifespikes/apext/apext
Via NPM
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:
apext list --path auth
Extra:
Display your route accepted http methods by adding the // @methods
comment. Check the 🎯 create
command below.
// my-route.ts
// @methods [GET, POST, PUT, DELETE]
// ...rest of the file
2. 🎯 create
Will create an API endpoint following a REST structure.
Argument:
<name>
- required (the name of your API endpoint)
Flags:
--path
- optional (/api
folder is default)
--ts
- optional (.js
file is generated by default)
Example:
apext create login --path auth --ts
Notes:
- When stating a
--path
you can create nested directories likepath/nested-path
. - If a folder does not exists, APEXT will create the folder for you.
Output file example (Typescript):
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
module.exports = {
jsContent: (name) => `
export default async function ${name} (req, res) {
return res.status(200).json('Hello from Apext Config')
}
`
}