From 479013f9c946730bfa1a07e6456161489c73233b Mon Sep 17 00:00:00 2001 From: TC Date: Sat, 14 Mar 2020 22:28:25 +0100 Subject: [PATCH] Generate fake package.json for electron-builder to resolve modules --- electron-builder.env | 1 - package.json | 3 ++- utils/generate-package-json.js | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) delete mode 100644 electron-builder.env create mode 100755 utils/generate-package-json.js diff --git a/electron-builder.env b/electron-builder.env deleted file mode 100644 index c6958f76..00000000 --- a/electron-builder.env +++ /dev/null @@ -1 +0,0 @@ -ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=1 diff --git a/package.json b/package.json index bc36fc6f..81d13f32 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "test": "xo", "start": "electron .", "icon": "rimraf assets/generated && electron-icon-maker --input=assets/youtube-music.png --output=assets/generated", - "postinstall": "yarn run icon && npm rebuild && node plugins/adblocker/generator.js && electron-rebuild", + "generate:package": "node utils/generate-package-json.js", + "postinstall": "yarn run generate:package YoutubeNonStop && yarn run icon && npm rebuild && node plugins/adblocker/generator.js && electron-rebuild", "clean": "rimraf dist", "build": "yarn run clean && build --win --mac --linux", "build:mac": "yarn run clean && build --mac", diff --git a/utils/generate-package-json.js b/utils/generate-package-json.js new file mode 100755 index 00000000..56566528 --- /dev/null +++ b/utils/generate-package-json.js @@ -0,0 +1,34 @@ +#!/usr/bin/env node + +const { existsSync, writeFile } = require("fs"); +const { join } = require("path"); +const { promisify } = require("util"); + +/** + * Generates a fake package.json for given packages that don't have any. + * Allows electron-builder to resolve them + */ + +const generatePackageJson = async packageName => { + var filepath = join("node_modules", packageName, "package.json"); + if (!existsSync(filepath)) { + console.log( + `No package.json found for ${packageName} module, generating one…` + ); + pkg = { + name: packageName, + version: "0.0.0", + description: "-", + repository: { type: "git", url: "-" }, + readme: "-" + }; + const writeFileAsync = promisify(writeFile); + await writeFileAsync(filepath, JSON.stringify(pkg, null, 2)); + } +}; + +if (require.main === module) { + process.argv.slice(2).forEach(async packageName => { + await generatePackageJson(packageName); + }); +}