Write npm package with rust programming lanuage



Faster npm package

So these days, frontend are trying to rewrite everything with rust, looks like there is nothing to do in frontend :). I am also interested in rust, also as a frontend, I should need to understand how this work roughly. So I decide to explore a bit about this, and try to create one hello world npm package with rust.

As I first guessing before this, I think they are compling rust to webassembly to use it, but seems not right for me, the debug will be a bit hard? Then I searched on npm package, tried some famous packages in the community:

I can see almost of them will have wasm related things. Since pacel has less rust codes, I will check that to see how it works in frontend.

  1. First, I checked the package.json file, I saw some of packages I didn’t familiar before, its @napi-rs/cli, punycode, rimraf and sinon, then check one by one

  2. Only @napi-rs is related to rs, also in its doc(https://napi.rs), I can see its using to write node script with rust, ha, that’s what we want.

  3. But its also not what we think before: its not wasm. For me, I think its make sense, these are build tool, so it should use node script. In browser then it should use webassembly.

But I more curious about codes in browser, so let’s try one api rust based.

I am going to ask Chatgpt to help me create this demo with this question: Please help to use rust programming language to create an webassembly API to use in browser.

Here is the result: https://chat.openai.com/share/b477e238-07f7-4772-84bf-e2556307ddd9

I am using Chatgpt 3.5, looks like result not very correct, you need to use wasm-pack build --target web to build it, then you can use it in browser, actually looks not very bad, even though some js function we can’t use, but wasm-pack provide a way to let you do such console.log, throw Error things with rust way. But Looks like if the error you didn’t throw it correctly, ex, devide 0 you didn’t consider, then it happened, the error is very vague to debug.

But all in all, WebAssembly looks very good now in browser, also I rememeber WebAssembly is the four lanuage browser supported natively.