Skip to content
A pluggable and extendable web framework which integrates React, Next and Koa to create your own web application out of the box with even zero configuration.
Branch: master
Clone or download
Latest commit 281e1c5 Apr 19, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
logo adds social logo Apr 19, 2019
spawner
src breaking: 2.0.11: rename all node modules path thing -> node path Apr 19, 2019
test
.editorconfig first commit Mar 23, 2019
.eslintignore config-loader: fixes a non-pointer error Apr 17, 2019
.eslintrc.js
.gitignore test/server: integrated tests, and cleans the cache of webpack dll pl… Apr 17, 2019
.travis.yml
HISTORY.md first commit Mar 23, 2019
LICENSE first commit Mar 23, 2019
README.md breaking: sandbox: redesign APIs of child process Apr 19, 2019
appveyor.yml first commit Mar 23, 2019
package.json

README.md

caviar

Build Status Coverage

A pluggable and extendable web framework which integrates React, Next and Koa(Eggjs) to create your own web application out of the box with even zero configuration.

Getting Started

mkdir hello && cd hello
yo generator-caviar
npm run dev

Yeah, we have our first application

File Structure

project/
|-- app
|-- pages
|-- caviar.config
|   |-- .env
|   |-- client.env
|   |-- index.js
|-- package.json
|-- ...

Thinking in caviar


The sections below is for development purpose

Extend caviar for your own business

Config chain

How to write caviar plugins

API Documentation

const {
  Sandbox,
  Server,
  ConfigLoader
} = require('caviar')

new Sandbox(options)

  • options Object
    • cwd path the current working directory
    • port? number server port
    • dev? boolean=false whether is for development purpose
    • serverClassPath? path the file path of the Server class. Defaults to the Server class path of the caviar project.
    • configLoaderClassPath? path the file path of the ConfigLoader class

Creates a new sandbox. Sandbox is design to filter the environment variables.

await sandbox.start(): ChildProcess

Start the sandbox, and it will create a new Server by passing {cwd, port, dev} as options.

new Server(options)

  • options Object
    • cwd
    • port? Number options.port will override config.port of caviar.config.js
    • dev?
    • configLoaderClassPath?

Create a new Server

const server = new Server({
  cwd,
  dev: true
})

await server.ready()
server.listen(8888)

await server.ready(): this

Initialize the server

server.callback(): Function

Returns a callback function suitable for the http.createServer() method to handle a request.

require('http')
.createServer(server.callback())
.listen(8888)

This method must NOT be called before the server is ready (await server.ready())

server.listen(port?): Promise

  • port? number optional server port. If port is specified, it will override options.port.
  • callback? Function

License

MIT


Thanks @reallinfo for the great logo

You can’t perform that action at this time.