https://github.com/zouloux/static-http
0 dependency node based static http server.
https://github.com/zouloux/static-http
Last synced: 11 months ago
JSON representation
0 dependency node based static http server.
- Host: GitHub
- URL: https://github.com/zouloux/static-http
- Owner: zouloux
- Created: 2022-10-11T10:23:05.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-10-28T08:49:00.000Z (about 3 years ago)
- Last Synced: 2025-02-06T09:18:21.463Z (11 months ago)
- Language: TypeScript
- Size: 74.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Node static http
0 dependency node based static http server.
### ✅ Features
- Super lightweight
- Start a local static server in 1 command
- Correct mime-types
- Default to `index.html`
- Directory listing if index is missing
- Types included for Node module usage
### ❌ Not included and not planned
- No config
- No CORS
- No HTTP credentials
- No cookies
- No cache
- No HLS server for media streaming
- No automatic browser open
- No routing system (but you can handle routes yourself with `onRequest`)
### 🙏 Wishlist
- Streaming of huge files (big files will be loaded entirely into RAM) ?
- Compatibility with byte-start for video seeking ?
- Searching for next available port automatically
# Start a static server from your terminal
##### Start with default port on current directory
- `npx @zouloux/static-http`
##### Specify root directory
- `npx @zouloux/static-http ./docs/`
##### Specify port
- `npx @zouloux/static-http ./docs/ -p 8080` (or `--port`)
# Install it globally and use it every day
##### With node
- `npm i -g @zouloux/static-http`
##### With bun 🐰
- `bun i -g @zouloux/static-http`
##### Use it with
- `static-http`
### Start from a node script
- `npm i @zouloux/static-http`
```typescript
import { startServer } from "@zouloux/static-http"
// Start a server with custom options.
startServer({
// Optionnal : specify port
port: 8080,
// Optionnal : specify root directory
root: './docs/',
// Optionnal : set custom index file. Default is index.html
indexFile: 'index.html',
// Optionnal : allow directory indexing if index file is missing. Default is true.
allowDirectoryIndex: true,
// Optional - Callback executed before any request
onRequest: async (request, response) => {
// Return false to halt and disable default static behavior
// Return true to continue static behavior
return true
},
// When any file has been statically requested
onInfo: (code:number, filePath:string) => {
console.log(`${code} - ${filePath}`)
}
})
```
## How to test
1. Clone this repository
2. `npm i`
3. `npm run build && node dist/cli.es2020.mjs test`
Open link in console and you should see an index file with a directory listing link.