apext

0.3.7 • Public • Published

apextgithub

output

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:

  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):

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

Package Sidebar

Install

npm i apext

Weekly Downloads

12

Version

0.3.7

License

MIT

Unpacked Size

69.1 kB

Total Files

68

Last publish

Collaborators

  • soloamilkar