QJSC(1)
π QJSC(1) β okay so bestie, this is qjsc π
Like, welcome to the manual page for qjsc, aka the QuickJS-NG bytecode compiler, and honestly? She's iconic. Sit down, grab a boba, we're doing this. π§β¨
π NAME π
qjsc β the QuickJS-NG bytecode compiler. That's her. That's the whole name. Slay.
β¨ SYNOPSIS β¨
qjsc [OPTION]... [FILE]...
Yeah, that's it. Options then files, in whatever order, and she will handle it. Periodt. π
π¦ DESCRIPTION π¦
Okay so QuickJS-NG is a small and embeddable JavaScript engine, and no cap, she aims to support the latest ECMAScript specification. Small. Embeddable. Modern. The whole package. π
So the qjsc executable runs the JavaScript compiler. What she does is generate bytecode from source files, and that bytecode can then be embedded in an executable. OR β plot twist β she can generate the necessary scaffolding to build a C application which embeds QuickJS. Choose your own adventure, both paths are valid, both are giving main character energy. π
TL;DR: source files go in, bytecode (or C scaffolding) comes out. It's giving compiler. iykyk.
π OPTIONS π
-bβ Output raw bytecode instead of C code. Just the raw stuff, no C wrapper, no extra decoration. Minimalist queen. π€-Cβ Compile as classic JavaScript script. By default,qjscwill try to detect if each FILE is a JS script or an ES module. So this is you saying "bestie, it's a script, trust me" instead of letting the auto-detect do its thing. π-DMODULE_NAME β Compile a dynamically loaded module or worker. Dynamic. Loaded later. Very mysterious, very "I'll appear when you least expect it". β¨-eβ Outputmain()and bytecode in a C file. Yesss, give us the entry point AND the bytecode together in one C file. Efficient queen. π₯-mβ Compile as ECMAScript module. By default,qjscwill try to detect if each FILE is a JS script or an ES module. So this is you manually saying "it's a module, she's a module, modules only". π-MMODULE_NAME[,CNAME] β Add initialization code for an external C module. Note the comma β CNAME is optional, MODULE_NAME is not. Don't skip the important part. π-nSCRIPT_NAME β Set the script name (as used in stack traces). Very important for when things go wrong and you need to know WHICH script is being dramatic. π-NCNAME β Set the C name of the generated data. Naming things is power, and this is you claiming it. π-oOUTPUT β Set the output filename. Otherwise she picks, and like, sometimes you want a say in your own destiny. πΈ-pPREFIX β Add a prefix to generated C names. Great for avoiding collisions, which is honestly just good manners. π«Ά-Pβ Do not add default system modules. Big "no thanks, I brought my own" energy. π-sβ Strip the source code. And listen, this one's got levels: specify this option twice to also strip debug info. Double it up, get more stripped. She's a bit of an overachiever like that. βοΈ-SN β Set the maximum stack size to N bytes. The default is1 048 576. Yes, that's the default, and yes, you have to live with it unless you say otherwise. π₯
Pro tip from your girl: that's-scapitalized differently from-Sand they do completely different things. One strips source, one sets stack size. Watch the case, bestie, she is case-sensitive and she will not be forgiving. π
π SEE ALSO π
π Man pages
qjs(1)β the sibling. Go say hi. The way that these two go together... obsessed. π
π Online documentation
Detailed documentation about the project can be found at:
https://quickjs-ng.github.io/quickjs/
Go read it, it's giving educational, it's giving thorough. πβ¨
And that's the whole page, bestie. Every option, every default, every path β nothing skipped, nothing gatekept. You're welcome. π
Signing off from the General Commands Manual, dated 2026-07-22 β this was QJSC(1), and she ate. No crumbs. πππ
π¦ where this page comes from
- arch rolling: quickjs-ng 0.18.0-1 Β· MIT
- nixpkgs unstable: quickjs-ng 0.18.0
- ubuntu stonking: qjs 0.16.2-2 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms