commit | c2d9db411b015bd9a48c13af466d11bc4b14b235 | [log] [tgz] |
---|---|---|
author | Yifei Teng <yifeit@google.com> | Mon Mar 23 14:08:59 2020 -0700 |
committer | Yifei Teng <yifeit@google.com> | Mon Mar 23 14:08:59 2020 -0700 |
tree | c12a70f703d9f326df235f69f6c715b9ebf0e82c | |
parent | 65d4d9dd59c5716cca77ffcf5374c45e5beebb9f [diff] |
Use `npm ci` instead of `npm install` when building. This stops accidentally updating packages, and strictly uses what's in package-lock.json. We can manually update packages/locks using `npm install` when developing.
fidlbolt is web app for exploring FIDL code and bytes, inspired by Matt Godbolt's Compiler Explorer.
To run a local fidlbolt server:
fx build host_x64/{fidlc,fidlgen_{llcpp,hlcpp,rust,go,dart}} zircon/tools
.make run
.http://localhost:8080
.If you don't want changes in the fuchsia tree (e.g. rebuilding fidlc or changing FIDL libraries) to affect the running fidlbolt, use make run COPY=1
instead.
The backend is written in Go 1.13. It uses net/http to serve static files and handle POST requests.
The frontend is written in Elm and TypeScript. It uses webpack for bundling.
To set up the frontend:
sudo apt-get install nodejs
.cd frontend && npm install
Then, use one of the commands listed in npm run
:
npm run dev
: build in development modenpm run watch
: rebuild in development mode on every file changenpm run tc
: typecheck TypeScript filesnpm run lint
: run eslint on TypeScript filesnpm run fix
: format and fix lint issues in TypeScript and Elm filesnpm run build
: build in production modeThe build commands read files in frontend/src/
and generate output in frontend/dist/
.
Before making a CL, always run make format
.
The project uses Docker for containerized deployment.
To build and run a new image locally:
sudo apt-get install docker-ce
../copy_fuchsia_files.sh
to get the latest FIDL files and binaries from your Fuchsia repository.docker image build -t fidlbolt .
docker container run --publish 8080:8080 --detach --name fb fidlbolt
You might need to use sudo
with the Docker commands.