+++ title = "Compiled languages" weight = 3 +++ # Compiled languages For compiled (Go, Rust) or transpiled (TypeScript) you can use `gw` to build new assets then restart the running binary to restart the server. ## Configuration Simply add the scripts to build the binary then another one to restart it and watch the repository. ### TypeScript For example for TypeScript, transpile to JS and run with Node.js: ```sh gw /path/to/repo -s 'npx tsc -p tsconfig.json' -p 'node dist/index.js' ``` If you want to ensure that your code is correct, you can run the unit tests first: ```sh gw /path/to/repo -s 'npm run test' -s 'npx tsc -p tsconfig.json' -p 'node dist/index.js' ``` For Next.js and other frameworks that require a build step before starting, you can use: ```sh gw /path/to/repo -s 'npm run build' -p 'npm run start' ``` ### Go For Go, you can either run it directly or build it first and run it as a subprocess: ```sh gw /path/to/repo -p 'go run main.go' # or gw /path/to/repo -s 'go build main.go' -p './main' ``` You can add testing as a script, if you want to run the unit tests before the code is deployed: ```sh gw /path/to/repo -s 'go test' -s 'go build main.go' -p './main' ``` ### Rust For Rust, you can either run it directly or build it first and run it as a subprocess: ```sh gw /path/to/repo -p 'cargo run --release' # or gw /path/to/repo -s 'cargo build --release' -p './target/release/repo' ``` Add the tests here as well to make sure that the code is correct: ```sh gw /path/to/repo -s 'cargo test' -s 'cargo build --release' -p './target/release/repo' ``` Also checkout [Docker configuration](/guides/docker-compose).