@nano-edge/cli
Version:
A simple CLI used to deploy an app to NanoEdge
62 lines (47 loc) • 1.95 kB
Markdown
# NanoEdge
All you need to do to deploy your app is to run the following command:
```sh
npx @nano-edge/cli deploy
```
Advanced usage:
Do not forget to set the `NANO_EDGE_AUTH_TOKEN` env var, which is required by the cli.
```sh
export NANO_EDGE_AUTH_TOKEN=xxx npx @nano-edge/cli deploy --env.MY_SECRET=$SOME_SECRET
```
To customize cli options, you can create a file `nano-edge.config.json`:
```json
{
"env": {
"SOME_ENV_VAR": "SOME_VALUE"
}
}
```
> [!IMPORTANT]
> Do not deploy secrets that are really secret! These secrets might be exploitable as nano-edge is currently not (yet?) hardened!
## Build output API example:
- functions/api.js
- functions/env.json
- static/index.html
- static/main.js
The signature of a function is `export default async (request: Request) => Promise<Response>`.\
A function can access env vars by using process.env.\
`env.json` will be generated by the cli if `nano-edge.config.ts` contains env vars. The file is overwritten if it already did exist before.
## How inbound traffic would be handled by which resource from the build output:
- `/api` -> `functions/api.js` (function exec)
- `/api/some/sub/path` -> `functions/api.js` (function exec)
- `/index.html` -> `static/index.html` (served static)
- `/main.js` -> `static/main.js` (served static)
- `/some/random/path` -> `static/index.html` (served static)
- Edge-case (precedence): If a static file exists with same name as a function, the static file is
not served.
Instead, the function is executed.
## Local development
If this is the first time you cloned this repository, make sure to run `npm install` in all subdirectories to make sure all dependencies are present. \
Only then continue with the following steps:
Just run the following two scripts to start the stack and deploy an example app:
```sh
docker compose -f compose.yml -f compose.dev.yml up --build --watch --remove-orphans
```
```sh
cd example-app && npm run deploy
```