A simple toolkit for compiling, patching codecs and packaging NW.js apps.
# Add NW.ts-Tools as a dependency.
npm i --save-dev nwts-toolsYou should also have nw@*-sdk listed under dependencies or devDependencies.
Replaces the FFmpeg library originally included with NW.js. Credits to nwjs-ffmpeg-prebuilt for the prebuilt binaries. Use this patch only for free and open-source projects. Licensing for commercial usage is beyond my understanding.
More information: FFmpeg License and Legal Considerations.
# Run from your project's root directory:
npx nwts-patch-codecsThis script downloads a fresh copy from nw (the same version as you specified in your package.json minus -sdk) and packages it alongside your already built application.
# Run from your project's root directory:
npx nwts-package
# Or, modified by environment variables:
PACKAGE_TYPE=zip NWJS_FFMPEG=PATCH NWJS_VERSION=0.55.0-sdk npx nwts-packageEnvironment variables used by these scripts are enumerated inside lib/types/env.d.ts.
This script runs nwjc on every Javascript file inside the directory specified in the BUILD_DIRECTORY variable, creating a .bin file for each one of them and replacing the original script's contents with the corresponding call to nw.Window.get().evalNWBin(). Read more here: Protect JavaScript Source Code.
# Run from your project's root directory:
BUILD_DIRECTORY=build npx nwts-compileimport fs from "node:fs";
import { NWJSManifest } from "nwts-tools/lib/types/nwjs_manifest";
const manifest: NWJSManifest = {
name: "app",
main: "index.html",
window: {
width: 240,
height: 45,
position: "center",
resizable: false
},
"chromium-args": "--force-dark-mode --disable-raf-throttling"
};
await fs.promises.writeFile("package.json", JSON.stringify(manifest));In NW.js you can import Node.js built-in modules with the nw.require() function, whose return type is any. Here is provided a collection of typed exports from Node.js builtin modules. Some examples:
import child_process, { promises } from "nwts-tools/lib/node/child_process";
import os from "nwts-tools/lib/node/os";
import path from "nwts-tools/lib/node/path";Powershell
zip, required fornwts-packagewhenPACKAGE_TYPEis set tozip.unzip, required fornwts-patch-codecs, and fornwts-packagewhenNWJS_FFMPEGis set toPATCH.
Check out this boilerplate that shows how to use NW.ts-Tools:
NW.ts-Tools Solid Starter