Skip to content

Asena-cli is a command-line tool designed to streamline and enhance the experience of using the Asena framework, making development faster and easier.

License

Notifications You must be signed in to change notification settings

AsenaJs/Asena-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

56 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Asena CLI

Version License: MIT Bun Version

Asena-cli provides several command-line utilities to help developers manage their asena applications efficiently. Here's a comprehensive guide to all available commands.

πŸ“š Table of Contents

πŸš€ Installation

Prerequisite: Bun runtime (v1.2.8 or higher)

bun install -g @asenajs/asena-cli

Verify installation:

asena --version

🏁 Getting Started

3 steps to create a new project:

  1. Scaffold a new project:
asena create
  1. Navigate into the project directory:
cd <Project name>
  1. Start development:
asena dev start

Your application will be available at http://localhost:3000.

πŸ“– Commands

asena create

The Create command bootstraps new Asena projects with a complete development environment setup.

Features
  • Interactive Setup: Uses inquirer for a user-friendly setup experience
  • Non-Interactive Mode: Support for CLI arguments to run in non-TTY environments (SSH, CI/CD)
  • Multi-Adapter Support: Choose between Hono or Ergenecore adapters during project setup
  • Project Structure: Creates the basic project structure with necessary files and directories
  • Default Components: Generates default controller and server setup
  • Development Tools: Optional integration of:
    • ESLint configuration
    • Prettier setup
  • Dependency Management: Automatically installs required dependencies based on selected adapter
Usage

Interactive Mode (prompts for all options):

asena create
# or create in current directory
asena create .

Non-Interactive Mode (specify all options via CLI):

# Create with all features enabled
asena create my-project --adapter=hono --logger --eslint --prettier

# Create in current directory without optional features
asena create . --adapter=ergenecore --no-logger --no-eslint --no-prettier

# Mix of CLI arguments and interactive prompts
asena create my-app --adapter=hono  # Will prompt for other options
CLI Options
Option Description Values
[project-name] Project name (use . for current directory) Any string
--adapter <adapter> Adapter to use hono, ergenecore
--logger / --no-logger Setup Asena logger boolean (default: true)
--eslint / --no-eslint Setup ESLint boolean (default: true)
--prettier / --no-prettier Setup Prettier boolean (default: true)

asena generate

Note: You can also use asena g as a shortcut.

The generate command allows you to quickly and consistently create project components.

Features

  • Multi-Component Support: Ability to generate controllers, services, middlewares, configs, and websockets
  • Automatic Code Generation: Creates template code with base structure and necessary imports
  • Adapter-Aware Generation: Generates adapter-specific code based on project configuration
  • Project Structure Integration: Places generated files in the correct directories
  • Shortcuts: Command aliases for faster usage (g, c, s, m, ws)
Component Full Command Shortcut Command Description
Controller asena generate controller asena g c Generates a controller
Service asena generate service asena g s Generates a service
Middleware asena generate middleware asena g m Generates a middleware
Config asena generate config asena g config Generates a server config class
WebSocket asena generate websocket asena g ws Generates a WebSocket namespace

asena dev start

The Dev command enables development mode with enhanced debugging capabilities.

Features

  • Build Integration: Automatically builds the project before starting

asena build

The Build command handles project deployment preparation.

Features

  • Configuration Processing: Reads and processes the Asena configuration file
  • Code Generation: Creates a temporary build file that combines all controllers and components
  • Import Management: Handles import statements and organizes them based on the project structure. No need to add controllers manually to root file
  • Server Integration: Processes the AsenaServer configuration and integrates components

asena init

The Init command helps set up project configuration with default settings(no need if you used asena create).

Features

  • Configuration Generation: Creates asena-config configuration file
  • Default Values: Provides sensible defaults for quick start

βš™οΈ Configuration

Customization via asena.config.ts:

import { defineConfig } from '@asenajs/asena'

export default defineConfig({
    sourceFolder: 'src', // folder where the project files are located
    rootFile: 'src/index.ts', // entry file of the project
    buildOptions: { // build options. For more details, visit https://bun.sh/docs/bundler
        outdir: 'dist',
        sourcemap: 'linked',
        target: 'bun',
        minify: {
            whitespace: true,
            syntax: true,
            identifiers: false,
        },
    },
});

πŸ“‚ Project Structure

Default project structure:

my-app/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ controllers/    # Route controllers
β”‚   β”œβ”€β”€ services/       # Business logic
β”‚   β”œβ”€β”€ middlewares/    # Middleware files
β”‚   β”œβ”€β”€ config/         # Server configuration classes
β”‚   β”œβ”€β”€ namespaces/     # WebSocket namespaces
β”‚   └── index.ts        # Application entry point
β”œβ”€β”€ tests/              # Test files
β”œβ”€β”€ public/             # Static assets
β”œβ”€β”€ asena.config.ts     # Configuration
└── package.json

About

Asena-cli is a command-line tool designed to streamline and enhance the experience of using the Asena framework, making development faster and easier.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •