npm install
npm run init
- Spin up a comet or distribution ship, or a fakeship. Such as, for example, the command ./urbit -F nec in wherever you keep your urbits. (Fakeships seem to take about 10 minutes to spin up on my machine.)
- If need be, edit
VITE_SHIP_URL
in.env.local
to point to your dev ship's web interface. This should be the url your ship gives you in its boilerplate output when starting up, in the line likehttp: web interface live on http://localhost:8080
. In fact, this is almost certainly the value you will see, which is why that is the default in the .env.local file. (This value technically could change a bunch, but in practice is usually just the same one.) - Set TURF_DESK in .env.local if the path to your desk directory will be different than the default (it probably will be different). This should be the file system path to the turf folder in your ship folder; that is, something like path/to/nec/turf. It can be a relative or absolute path, whatever works best for you.
npm run desk
- As part of that script, the following commands will be run in your ship as though you had run them from the ship's dojo. If the script fails for some reason, feel free to run them manually:
|new-desk %turf
|mount %turf
|commit %turf
|install our %turf
- Make sure that your versions are cromulent. An error message like
clay: wait-for-kelvin, [need=[%zuse %415] have=[n=[lal=%zuse num=413] l={} r={}]]
when you try to|commit
means you are NOT crom, you will NOT pass go, and you will NEVER collect $200. Try updating urbit in such a case.
- From the turf source folder:
npm start
- Visit http://127.0.0.1:3000/ and sign in with your access code (
+code
in the dojo to get this access code) (you will get cryptic Urbit api and file-not-found errors in the web console if you forget this step. Notably, session.js will be missing, although other errors will also cause this.) - Visit http://127.0.0.1:3000/apps/turf/
- If you make changes to the front-end, you will have to refresh the web page,
or possibly hit r on the command line window running vite, depending on your
operating system or perhaps other factors (it's supposed to hot-reload, but
wasn't designed to work with phaser so it often doesn't really work properly).
You can, however, leave this open while you modify the back-end with
npm run desks
, which is orthogonal.
For multiple ships, eg to test multiplayer:
- An important thing to remember is that fakeships also use hierarchical networking, as described in https://developers.urbit.org/guides/core/environment#local-networking. This is inconvenient, so your best bet is to run two fake galaxies, like ~bud and ~nec. You can also just add more running ships to your setup to sponsor appropriately.
- Do the ship setup steps multiple times, setting TURF_DESK2 to your second
desk, and running
npm run desks
instead ofnpm run desk
. Don't worry: this is idempotent, so you can do it again even if you've already installed the first ship, no problem. (It will update the turf code in the other ship to the newest version, however.) npm start
like usual. Or, I suppose you can usenpm start&
to start it as a background process in your shell (at least in bash). (You may find background processes too annoying and cumbersome, however. Here's a hint: use fg to resume a stopped background procress.)- start a second ui dev server like so:
SHIP_URL="http://127.0.0.1:8081" npm run dev -- --port 3001
. This is whatnpm run start2
does. - the command
npm run tmux
runs the four processes you'll need (including the urbit ships), in one convenient package, and lets you see all the processes in a tmux instance.
To push the hoon source code to the ships, run npm run desks
or
npm run desks
. Since this script includes a |commit
to the desks, they will
hot-reload automatically when the new source code is pushed to them thereby.
Those templates dependencies are maintained via pnpm via
pnpm up -Lri
.
This is the reason you see a pnpm-lock.yaml
. That being said, any package
manager will work. This file can be safely be removed once you clone a template.
$ npm install # or pnpm install or yarn install
Learn more on the Solid Website and come chat with us on our Discord
In the project directory, you can run:
Runs the app in the development mode.
Open
http://localhost:3000 to view it in the browser.
The page will reload if you make edits (maybe).
Builds the app for production to the dist
folder.
It correctly bundles
Solid in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is
ready to be deployed!
You can deploy the dist
folder to any static host provider (netlify, surge,
now, etc.)
Further documentation on this project can be found in ./desk/doc/