All you need to do to deploy your app is to run the following command:
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.
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
:
{
"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!
- 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.
-
/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.
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:
docker compose -f compose.yml -f compose.dev.yml up --build --watch --remove-orphans
cd example-app && npm run deploy