An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

![apextgithub](https://user-images.githubusercontent.com/71573508/182018691-edc8aa18-04a4-4976-bdae-890ada85cc1f.png)

![output](https://user-images.githubusercontent.com/71573508/185773820-7dcdbdb7-535d-4315-bb5c-71f1045f3b88.gif)

# 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')
}
`
}

```