0.3.7 • Published 2 years ago

apext v0.3.7

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

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:

optiontypedescription
tsContentfunctionA 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.
jsContentfunctionA 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.
typescriptbooleanIf 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')
      }
    `
  }
  
0.3.0

2 years ago

0.3.6

2 years ago

0.3.7

2 years ago

0.3.2

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.0.1

2 years ago