mirror of
https://github.com/syumai/workers.git
synced 2025-03-10 17:29:11 +00:00
Merge pull request #47 from syumai/move-templates
move templates into workers repository
This commit is contained in:
commit
119ede3b02
28
README.md
28
README.md
@ -60,8 +60,28 @@ func main() {
|
|||||||
For concrete examples, see `examples` directory.
|
For concrete examples, see `examples` directory.
|
||||||
Currently, all examples use tinygo instead of Go due to binary size issues.
|
Currently, all examples use tinygo instead of Go due to binary size issues.
|
||||||
|
|
||||||
A template repository is also available.
|
## Quick Start
|
||||||
* https://github.com/syumai/worker-template-tinygo
|
|
||||||
|
First, please install the following tools:
|
||||||
|
|
||||||
|
* Node.js (and npm)
|
||||||
|
* [wrangler](https://developers.cloudflare.com/workers/wrangler/)
|
||||||
|
- You can install it by running `npm install -g wrangler`.
|
||||||
|
* tinygo
|
||||||
|
|
||||||
|
After installation, please run the following commands.
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ wrangler generate my-app syumai/workers/_templates/cloudflare/worker-tinygo
|
||||||
|
$ cd my-app
|
||||||
|
$ go mod init
|
||||||
|
$ go mod tidy
|
||||||
|
$ make dev # start running dev server
|
||||||
|
$ curl http://localhost:8787/hello
|
||||||
|
Hello!
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want a more detailed description, please refer to the README.md file in the generated directory.
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
@ -73,9 +93,9 @@ To deploy a Worker, the following steps are required.
|
|||||||
* Build a Wasm binary.
|
* Build a Wasm binary.
|
||||||
* Upload a Wasm binary with a JavaScript code to load and instantiate Wasm (for entry point).
|
* Upload a Wasm binary with a JavaScript code to load and instantiate Wasm (for entry point).
|
||||||
|
|
||||||
The [worker-template-tinygo](https://github.com/syumai/worker-template-tinygo) repository contains all the required files, so I recommend using this template.
|
The [worker-tinygo template](https://github.com/syumai/workers/tree/main/_templates/cloudflare/worker-tinygo) contains all the required files, so I recommend using this template.
|
||||||
|
|
||||||
The [worker-template-go](https://github.com/syumai/worker-template-go) repository (using regular Go, not tinygo) is also available, but it requires a paid plan of Cloudflare Workers (due to the large binary size).
|
The [worker-go template](https://github.com/syumai/workers/tree/main/_templates/cloudflare/worker-go) (using regular Go, not tinygo) is also available, but it requires a paid plan of Cloudflare Workers (due to the large binary size).
|
||||||
|
|
||||||
### Where can I have discussions about contributions, or ask questions about how to use the library?
|
### Where can I have discussions about contributions, or ask questions about how to use the library?
|
||||||
|
|
||||||
|
1
_templates/cloudflare/worker-go/.gitignore
vendored
Normal file
1
_templates/cloudflare/worker-go/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
build
|
12
_templates/cloudflare/worker-go/Makefile
Normal file
12
_templates/cloudflare/worker-go/Makefile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.PHONY: dev
|
||||||
|
dev:
|
||||||
|
wrangler dev
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
build:
|
||||||
|
go run github.com/syumai/workers/cmd/workers-assets-gen@latest -mode=go
|
||||||
|
GOOS=js GOARCH=wasm go build -o ./build/app.wasm .
|
||||||
|
|
||||||
|
.PHONY: publish
|
||||||
|
publish:
|
||||||
|
wrangler publish
|
58
_templates/cloudflare/worker-go/README.md
Normal file
58
_templates/cloudflare/worker-go/README.md
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# worker-template-go
|
||||||
|
|
||||||
|
- A template for starting a Cloudflare Worker project with Go.
|
||||||
|
- This template uses [`workers`](https://github.com/syumai/workers) package to run an HTTP server.
|
||||||
|
|
||||||
|
## Notice
|
||||||
|
|
||||||
|
- A free plan Cloudflare Workers only accepts ~1MB sized workers.
|
||||||
|
- Go Wasm binaries easily exceeds this limit, so **you'll need to use a paid plan of Cloudflare Workers** (which accepts ~5MB sized workers).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
- `main.go` includes simple HTTP server implementation. Feel free to edit this code and implement your own HTTP server.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Node.js
|
||||||
|
- [wrangler](https://developers.cloudflare.com/workers/wrangler/)
|
||||||
|
- just run `npm install -g wrangler`
|
||||||
|
- Go
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
```
|
||||||
|
$ wrangler generate my-app syumai/workers/_templates/cloudflare/worker-go
|
||||||
|
$ cd my-app
|
||||||
|
$ go mod init
|
||||||
|
$ go mod tidy
|
||||||
|
$ make dev # start running dev server
|
||||||
|
$ curl http://localhost:8787/hello
|
||||||
|
Hello!
|
||||||
|
```
|
||||||
|
|
||||||
|
- To change worker name, please edit `name` property in `wrangler.toml`.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
### Commands
|
||||||
|
|
||||||
|
```
|
||||||
|
make dev # run dev server
|
||||||
|
make build # build Go Wasm binary
|
||||||
|
make publish # publish worker
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing dev server
|
||||||
|
|
||||||
|
- Just send HTTP request using some tools like curl.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ curl http://localhost:8787/hello
|
||||||
|
Hello!
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
$ curl -X POST -d "test message" http://localhost:8787/echo
|
||||||
|
test message
|
||||||
|
```
|
24
_templates/cloudflare/worker-go/main.go
Normal file
24
_templates/cloudflare/worker-go/main.go
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/syumai/workers"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
http.HandleFunc("/hello", func(w http.ResponseWriter, req *http.Request) {
|
||||||
|
msg := "Hello!"
|
||||||
|
w.Write([]byte(msg))
|
||||||
|
})
|
||||||
|
http.HandleFunc("/echo", func(w http.ResponseWriter, req *http.Request) {
|
||||||
|
b, err := io.ReadAll(req.Body)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
io.Copy(w, bytes.NewReader(b))
|
||||||
|
})
|
||||||
|
workers.Serve(nil) // use http.DefaultServeMux
|
||||||
|
}
|
9
_templates/cloudflare/worker-go/wrangler.toml
Normal file
9
_templates/cloudflare/worker-go/wrangler.toml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
name = "go-worker"
|
||||||
|
main = "./build/worker.mjs"
|
||||||
|
compatibility_date = "2022-11-19"
|
||||||
|
compatibility_flags = [
|
||||||
|
"streams_enable_constructors"
|
||||||
|
]
|
||||||
|
|
||||||
|
[build]
|
||||||
|
command = "make build"
|
1
_templates/cloudflare/worker-tinygo/.gitignore
vendored
Normal file
1
_templates/cloudflare/worker-tinygo/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
build
|
12
_templates/cloudflare/worker-tinygo/Makefile
Normal file
12
_templates/cloudflare/worker-tinygo/Makefile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.PHONY: dev
|
||||||
|
dev:
|
||||||
|
wrangler dev
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
build:
|
||||||
|
go run github.com/syumai/workers/cmd/workers-assets-gen@latest
|
||||||
|
tinygo build -o ./build/app.wasm -target wasm ./...
|
||||||
|
|
||||||
|
.PHONY: publish
|
||||||
|
publish:
|
||||||
|
wrangler publish
|
53
_templates/cloudflare/worker-tinygo/README.md
Normal file
53
_templates/cloudflare/worker-tinygo/README.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# worker-template-tinygo
|
||||||
|
|
||||||
|
- A template for starting a Cloudflare Worker project with tinygo.
|
||||||
|
- This template uses [`workers`](https://github.com/syumai/workers) package to run an HTTP server.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
- `main.go` includes simple HTTP server implementation. Feel free to edit this code and implement your own HTTP server.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Node.js
|
||||||
|
- [wrangler](https://developers.cloudflare.com/workers/wrangler/)
|
||||||
|
- just run `npm install -g wrangler`
|
||||||
|
- tinygo
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
```
|
||||||
|
$ wrangler generate my-app syumai/workers/_templates/cloudflare/worker-tinygo
|
||||||
|
$ cd my-app
|
||||||
|
$ go mod init
|
||||||
|
$ go mod tidy
|
||||||
|
$ make dev # start running dev server
|
||||||
|
$ curl http://localhost:8787/hello
|
||||||
|
Hello!
|
||||||
|
```
|
||||||
|
|
||||||
|
- To change worker name, please edit `name` property in `wrangler.toml`.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
### Commands
|
||||||
|
|
||||||
|
```
|
||||||
|
make dev # run dev server
|
||||||
|
make build # build Go Wasm binary
|
||||||
|
make publish # publish worker
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing dev server
|
||||||
|
|
||||||
|
- Just send HTTP request using some tools like curl.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ curl http://localhost:8787/hello
|
||||||
|
Hello!
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
$ curl -X POST -d "test message" http://localhost:8787/echo
|
||||||
|
test message
|
||||||
|
```
|
19
_templates/cloudflare/worker-tinygo/main.go
Normal file
19
_templates/cloudflare/worker-tinygo/main.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/syumai/workers"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
http.HandleFunc("/hello", func(w http.ResponseWriter, req *http.Request) {
|
||||||
|
msg := "Hello!"
|
||||||
|
w.Write([]byte(msg))
|
||||||
|
})
|
||||||
|
http.HandleFunc("/echo", func(w http.ResponseWriter, req *http.Request) {
|
||||||
|
io.Copy(w, req.Body)
|
||||||
|
})
|
||||||
|
workers.Serve(nil) // use http.DefaultServeMux
|
||||||
|
}
|
9
_templates/cloudflare/worker-tinygo/wrangler.toml
Normal file
9
_templates/cloudflare/worker-tinygo/wrangler.toml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
name = "tinygo-worker"
|
||||||
|
main = "./build/worker.mjs"
|
||||||
|
compatibility_date = "2022-05-13"
|
||||||
|
compatibility_flags = [
|
||||||
|
"streams_enable_constructors"
|
||||||
|
]
|
||||||
|
|
||||||
|
[build]
|
||||||
|
command = "make build"
|
Loading…
x
Reference in New Issue
Block a user