At Tauri we originally built our CLI with typescript and node.js, but we've been looking into alternatives for a while. In that vein, we just POC'd building a Tauri app with Deno (instead of node.js)
We won't explain how to install the toolchains (deno, rust and tauri), and expect you to have already built your first Tauri apps already. But if you are new to all of this, here are the details:
Rig and build!
git clone git@github.com:tauri-apps/tauri
cd tauri/cli
git clone git@github.com:lucasfernog/tauri-deno-cli deno
cd ../tauri/examples/communication
deno run --unstable --allow-read --allow-run --allow-net --allow-env --allow-write ../../../cli/deno/index.ts build
Benchmarking
The second time you run deno build, you'll have all the deps already installed and the rust crates as well, so let's see how long it takes on MacOS (this isn't a scientific bench):
deno
command
$ time deno run --unstable --allow-read --allow-run --allow-net --allow-env --allow-write ../../../cli/deno/index.ts build
with antibloat
real 1m2.738s
user 0m42.514s
sys 0m2.933s
no antibloat
real 0m25.001s
user 0m16.473s
sys 0m1.758s
no antibloat, just .app
real 0m5.906s
user 0m11.780s
sys 0m1.268s
node.js
command
$ time node ../../../cli/tauri.js/bin/tauri build
with antibloat
real 1m10.295s
user 0m51.990s
sys 0m3.009s
no antibloat
real 0m44.562s
user 1m5.383s
sys 0m3.187s
no antibloat, just .app
real 0m26.423s
user 0m59.936s
sys 0m2.805s
Discussion
The ~1 minute build time might seem like it takes a long time, but we are actually using these antibloat techniques only possible when single-threading.
Also, if you are trying this in your own project, you should know that you will have to run
yarn tauri dev
at least once in order to createindex.tauri.html
. We haven't started porting the inliner to deno.
Nevertheless, deno performs better in both cases - without antibloat almost twice as fast, and just building a .app
its about 4.5x faster. So I absolutely have to agree with Lucas' sentiment:
deno is f!cking amazing
Top comments (1)
Hey Daniel,
Great article. I have a mern stack web app. I want to convert this to a desktop application using tauri. But for some reason, I am not able to integrate backend (node js) code to the frontend using tauri.