The goal of this package is to help you build node.js SEA with ease.
CLI usage is not implemented yet.
import{compile}from"setil";import{readFileSync}from"node:fs";import{resolve}from"node:path";constinput=readFileSync("src/index.js","utf-8");constoutput=`./app.exe`;awaitsetil.compile(input,output);// Enjoy!compile(input: string, rawOutput: string, rawOptions?: Partial<Options>): Promise<Result>
- input - Since SEA doesn't allow imports after compilation, you can use rollup to bundle your project into a single file. You can also check rollup-plugin-jsative if you are using native modules.
- output (rawOutput) - The output path of your application, e.g.
./program.exe. - options (rawOptions) - Any additional customization, checkout Options
| Property | Type | Default | Description |
|---|---|---|---|
logLevel | LogLevel | "warn" | Specifies the desired log level for the application. |
disableSeaWarning | boolean | false | Disables (node:16104) ExperimentalWarning: Single executable application is an experimental feature and might change at any time |
useSnapshot | boolean | false | Startup Snapshots |
useCodeCache | boolean | false | V8 Code Cache |
nodeExePath | string | undefined | process.execPath | The path where the blob should be injected into (Optional) |
noSign | boolean | true | Controls whether to remove the original Node.JS signature. |
preInject | (path: string) => any | Promise | Noop (no operation) | A hook executed just before the blob is injected into the application can be used to modify the nodeExePath file. |
| Property | Type | Description |
|---|---|---|
input | string | The input code used. |
outputPath | string | The output path of the SEA. |
nodeExePath | string | The nodeExePath used. |
tempDir | string | The temporary directory used. |
One of debug, warn or silent
- debug - Show debug logs
- warn - Show warnings only (default)
- silent - Don't print anything