{"library":"nw-builder","title":"NW.js Desktop Application Builder","description":"nw-builder is a robust utility for creating, running, and packaging desktop applications built with NW.js across macOS, Windows, and Linux platforms. The package is currently at version 4.17.7 and maintains an active development cycle, releasing frequent patch updates and occasional minor feature enhancements, often on a weekly or bi-weekly basis. It distinguishes itself by offering comprehensive features such as fetching NW.js binaries, integrating community-built FFmpeg for proprietary codec support, customizing executable metadata, managing application icons, and downloading from alternative mirrors. A critical consideration for developers is ensuring Node.js ABI compatibility, as `nw-builder` strongly recommends matching the host system's Node.js version to the one embedded in the target NW.js release to prevent issues with native Node.js modules.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install nw-builder"],"cli":{"name":"nw-builder","version":null}},"imports":["import nwbuild from 'nw-builder';","let nwbuild;\nimport('nw-builder')\n  .then((moduleObject) => {\n    nwbuild = moduleObject.default; // Access the default export\n  })\n  .catch((error) => {\n    console.error(error);\n  });","npx nwbuild --mode=build --flavor=sdk --srcDir=./path/to/project --outDir=./dist"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import nwbuild from \"nw-builder\";\nimport path from \"path\";\nimport fs from \"fs\";\n\nasync function buildNwApp() {\n  const projectDir = path.join(process.cwd(), \"my-nw-app\");\n  const outputDir = path.join(process.cwd(), \"dist\");\n\n  // Create a minimal NW.js app for demonstration\n  fs.mkdirSync(projectDir, { recursive: true });\n  fs.writeFileSync(path.join(projectDir, \"index.html\"), `\n    <!DOCTYPE html>\n    <html>\n    <head><title>My NW.js App</title></head>\n    <body>\n      <h1>Hello from NW.js!</h1>\n      <p>Node.js version: <script>document.write(process.versions.node)</script></p>\n      <p>NW.js version: <script>document.write(process.versions.nw)</script></p>\n    </body>\n    </html>\n  `);\n  fs.writeFileSync(path.join(projectDir, \"package.json\"), `{\n    \"name\": \"my-nw-app\",\n    \"main\": \"index.html\",\n    \"version\": \"1.0.0\"\n  }`);\n\n  console.log(`Building NW.js application from: ${projectDir}`);\n\n  try {\n    await nwbuild({\n      mode: \"build\",\n      flavor: \"sdk\", // Use 'sdk' for development, 'normal' for production\n      srcDir: projectDir,\n      outDir: outputDir,\n      cacheDir: path.join(process.cwd(), \".nw-cache\"), // Custom cache directory\n      platforms: [\"win\", \"osx\", \"linux\"], // Build for all major platforms\n      logLevel: \"info\",\n      app: {\n        name: \"MyNwApp\",\n        product_string: \"My NW.js Application\",\n      },\n      // If you need proprietary codecs, enable ffmpeg: true (read license constraints!)\n      // ffmpeg: true,\n    });\n    console.log(`Successfully built NW.js application to: ${outputDir}`);\n  } catch (error) {\n    console.error(\"NW.js build failed:\", error);\n  }\n}\n\nbuildNwApp();","lang":"typescript","description":"This quickstart demonstrates how to programmatically build a multi-platform NW.js desktop application using `nw-builder`, including creating a minimal project structure and configuring common build options.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}