@flightdev/adapter-node
v0.0.7
Published
Node.js adapter for Flight Framework - deploy to any Node.js server
Readme
@flightdev/adapter-node
Node.js deployment adapter for Flight Framework. Deploy to any Node.js hosting environment.
Table of Contents
- Installation
- Quick Start
- Configuration
- Build Output
- Running in Production
- Docker
- Environment Variables
- API Reference
- License
Installation
npm install @flightdev/adapter-nodeQuick Start
// flight.config.ts
import { defineConfig } from '@flightdev/core';
import node from '@flightdev/adapter-node';
export default defineConfig({
adapter: node(),
});Build and run:
flight build
node .output/server/index.mjsConfiguration
node({
// Server entry point (optional, auto-generated)
entry: './src/server.ts',
// Host to bind
host: '0.0.0.0',
// Port to listen on
port: 3000,
// Enable gzip/brotli compression
precompress: true,
// Environment variable prefix for public vars
envPrefix: 'PUBLIC_',
// Enable cluster mode for multi-core
cluster: false,
// Number of workers (default: CPU cores)
workers: 4,
});Build Output
After building, the adapter generates:
.output/
├── server/
│ ├── index.mjs # Server entry point
│ ├── chunks/ # Code-split chunks
│ └── assets/ # Static assets (if embedded)
├── client/
│ ├── assets/ # Hashed static files
│ └── index.html # SPA fallback
└── package.json # Production dependenciesRunning in Production
Direct Node.js
# Build
npm run build
# Start (single process)
node .output/server/index.mjs
# Start with cluster mode
NODE_CLUSTER=true node .output/server/index.mjsPM2
# Install PM2
npm install -g pm2
# Start
pm2 start .output/server/index.mjs --name my-app
# Cluster mode
pm2 start .output/server/index.mjs -i max --name my-app
# Save and setup startup
pm2 save
pm2 startupSystemd
# /etc/systemd/system/myapp.service
[Unit]
Description=My Flight App
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node .output/server/index.mjs
Restart=on-failure
Environment=NODE_ENV=production
Environment=PORT=3000
[Install]
WantedBy=multi-user.targetDocker
Dockerfile
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/.output .output
COPY --from=builder /app/package*.json ./
RUN npm ci --omit=dev
EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]Build and Run
docker build -t my-flight-app .
docker run -p 3000:3000 my-flight-appEnvironment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| PORT | Server port | 3000 |
| HOST | Server host | 0.0.0.0 |
| NODE_ENV | Environment | production |
| NODE_CLUSTER | Enable cluster | false |
| NODE_WORKERS | Cluster workers | CPU cores |
API Reference
Adapter Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| entry | string | auto | Custom server entry |
| host | string | '0.0.0.0' | Bind host |
| port | number | 3000 | Listen port |
| precompress | boolean | true | Enable compression |
| cluster | boolean | false | Multi-process mode |
| workers | number | CPU count | Worker processes |
License
MIT
