Thanks for your interest in this project!
❤️ Matt
Translate idiomatic Go into concise Javascript that works in every browser. Use Go's type system and world-class tooling to build large web applications with confidence.
Visit mat.tm/joy to learn more about Joy.
Getting Started · Examples · Using the CLI
Contributing · FAQ · More Links
Joy API · DOM API (coming soon!) · Virtual DOM API (coming soon!)
1. Install Joy:
curl -sfL https://raw.githubusercontent.com/matthewmueller/joy/master/install.sh | sh
Note: you can also download from the releases tab.
2. Create a main.go
file with the following code:
package main
func main() {
println("hi world!")
}
3. Run the code in a real browser:
joy run main.go
4. See the compiled Javascript:
joy main.go
Visit https://mat.tm/joy/#examples or peruse the test suite.
Compile Go into Javascript:
joy <main.go>
Compile and run the Go code in headless chrome:
joy run <main.go>
Build a development version of the code:
joy build --dev <main.go>...
Build a production version of the code (coming soon!):
joy build <main.go>...
Start a development server with livereload:
joy serve <main.go>...
Run
joy help
for additional details.
So happy to hear you're interested in contributing! Here's a quick rundown of how to get setup:
Setup
-
Make sure you have the Go environment setup on your computer. There are quite a few better resources online on how to do that
-
go get -u -v github.com/matthewmueller/joy/...
to install the compiler from source -
go test -v
to run all the tests
Links and tips:
- https://astexplorer.net/: I've been using this to figure out how to build the JS tree
- http://goast.yuroyoro.net/ : Simple Go AST viewer
- https://github.com/estree/estree/blob/master/es5.md: Link to the ES3 AST format, this is implemented in syntax.go
- https://golang.org/ref/spec: You may need to refer to this to see what types are possible in Go's AST
- To run all tests:
go test -v
- To run individual tests:
go test -v -run Test/08
pretty.Println(ast)
will pretty print the JS AST (requires this package)ast.Print(nil, node)
will pretty print the Go AST
If you have any further questions, open an issue or reach out to me on twitter.
Visit https://mat.tm/joy/#faq to view the FAQ.
- Run
joy help
to see what else Joy can do for you - Visit mat.tm/joy to read more about Joy's origins
- Chat with us in #joy-compiler on Slack at gophers.slack.com
- Star github.com/matthewmueller/joy to follow the development
- Follow twitter.com/mattmueller for project updates