From 4f6b1ebbf238cedfc05bfafabb383ba47bb62bae Mon Sep 17 00:00:00 2001 From: MrKBear Date: Sun, 17 Apr 2022 01:26:05 +0800 Subject: [PATCH] Add auto bundle script --- .gitignore | 1 + config/electron.forge.config.js | 55 +++++++++++++++++++++++++++++++++ config/webpack.electron.js | 1 + package.json | 10 ++++-- source/Electron/Electron.ts | 4 +-- source/Service/Service.ts | 2 +- 6 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 config/electron.forge.config.js diff --git a/.gitignore b/.gitignore index 4104ff8..c597a77 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ node_modules/ jspm_packages/ build/ out/ +bundle/ # TypeScript v1 declaration files typings/ diff --git a/config/electron.forge.config.js b/config/electron.forge.config.js new file mode 100644 index 0000000..2da8873 --- /dev/null +++ b/config/electron.forge.config.js @@ -0,0 +1,55 @@ +const FS = require("fs"); +const Path = require("path"); +const minimist = require("minimist"); + +const args = minimist(process.argv.slice(2)); + +const PackageJSON = JSON.parse( + FS.readFileSync(Path.join(__dirname, "../package.json")) +); + +const Config = { + "name": PackageJSON.name, + "productName": PackageJSON.name, + "version": PackageJSON.version, + "description": PackageJSON.description, + "main": "./Electron.js", + "scripts": { + "start": "electron-forge start", + "package": "electron-forge package", + "make": "electron-forge make", + "publish": "electron-forge publish", + "lint": "echo \"No linting configured\"" + }, + "keywords": PackageJSON.keywords, + "author": { + "name": PackageJSON.author, + "email": "mrkbear@qq.com" + }, + "license": PackageJSON.license, + "config": { + "forge": { + "packagerConfig": {}, + "makers": [ + { + "name": "@electron-forge/maker-zip", + "platforms": [ + "darwin" + ] + } + ] + } + }, + "dependencies": { + "electron-squirrel-startup": "^1.0.0", + "detect-port": PackageJSON.dependencies["detect-port"], + "express": PackageJSON.dependencies["express"], + }, + "devDependencies": { + "@electron-forge/cli": "^6.0.0-beta.63", + "@electron-forge/maker-zip": "^6.0.0-beta.63", + "electron": PackageJSON.devDependencies.electron + } +} + +FS.writeFileSync(Path.join(Path.resolve("./"), args.out ?? "./", "./package.json"), JSON.stringify(Config, null, 4)); \ No newline at end of file diff --git a/config/webpack.electron.js b/config/webpack.electron.js index 803b274..a691723 100644 --- a/config/webpack.electron.js +++ b/config/webpack.electron.js @@ -25,6 +25,7 @@ module.exports = (env) => { } }, + // externals: [nodeExternals({ allowlist: [/^(((?!electron).)*)$/] })], externals: [nodeExternals()], module: { diff --git a/package.json b/package.json index cbcc7e5..0390b0d 100644 --- a/package.json +++ b/package.json @@ -19,17 +19,21 @@ "run-service": "node ./build/ServiceRunner.js --run --path ./build --port 12000", "build-run-web": "npm run build-web & npm run build-service & npm run run-service", "release-run-web": "npm run release-web & npm run release-service & npm run run-service", - "copy-fluent-icon": "fse mkdirp ./build/font-icon/ && fse emptyDir ./build/font-icon/ && fse copy ./node_modules/@fluentui/font-icons-mdl2/fonts/ ./build/font-icon/", + "copy-fluent-icon": "fse mkdirp ./build/font-icon/ & fse emptyDir ./build/font-icon/ & fse copy ./node_modules/@fluentui/font-icons-mdl2/fonts/ ./build/font-icon/", "build-run-desktop-web": "npm run build-desktop-web & npm run copy-fluent-icon & npm run build-service & npm run run-service", "release-run-desktop-web": "npm run release-desktop-web & npm run copy-fluent-icon & npm run release-service & npm run run-service", "skip-electron-ci": "set ELECTRON_SKIP_BINARY_DOWNLOAD=1& npm ci", "build-electron": "webpack --mode development --config ./config/webpack.electron.js", "release-electron": "webpack --mode production --no-devtool --config ./config/webpack.electron.js", "electron-cache": "set ELECTRON_SKIP_BINARY_DOWNLOAD=& set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/& set ELECTRON_CUSTOM_DIR={{ version }}& node ./node_modules/electron/install.js", - "electron": "set LIVING_TOGETHER_BASE_PATH=./build& npx electron ./build/Electron.js", + "electron": "set LIVING_TOGETHER_BASE_PATH=./build& set LIVING_TOGETHER_WEB_PATH=/& npx electron ./build/Electron.js", "hmr-electron": "npm run build-electron & set LIVING_TOGETHER_SERVICE=http://127.0.0.1:12000& npm run electron", "build-run-electron": "npm run build-desktop-web & npm run copy-fluent-icon & npm run build-electron & npm run electron", - "release-run-electron": "npm run release-desktop-web & npm run copy-fluent-icon & npm run release-electron & npm run electron" + "release-run-electron": "npm run release-desktop-web & npm run copy-fluent-icon & npm run release-electron & npm run electron", + "copy-package-json": "fse mkdirp ./bundle/ & node ./config/electron.forge.config.js --out ./bundle", + "copy-build-result": "fse mkdirp ./bundle/ & fse mkdirp ./build/ & fse copy ./build/ ./bundle/", + "electron-app-ci": "cd ./bundle & npm install & cd ../", + "gen-bundle": "fse emptyDir ./bundle/ & npm run copy-package-json & npm run electron-app-ci" }, "keywords": [ "artwork", diff --git a/source/Electron/Electron.ts b/source/Electron/Electron.ts index 719eb0d..eb3c1d3 100644 --- a/source/Electron/Electron.ts +++ b/source/Electron/Electron.ts @@ -52,13 +52,13 @@ class ElectronApp { webPreferences: { preload } }); - this.simulatorWindow.loadURL(this.serviceUrl); + this.simulatorWindow.loadURL(this.serviceUrl + (ENV.LIVING_TOGETHER_WEB_PATH ?? "/resources/app/")); this.handelSimulatorWindowBehavior(); app.on('window-all-closed', function () { if (process.platform !== 'darwin') app.quit() - }) + }); } private handelSimulatorWindowBehavior() { diff --git a/source/Service/Service.ts b/source/Service/Service.ts index c79be00..ceba384 100644 --- a/source/Service/Service.ts +++ b/source/Service/Service.ts @@ -42,7 +42,7 @@ class Service { console.log("Service: service run in port " + this.servicePort); - return "http://127.0.0.1:" + this.servicePort + "/"; + return "http://127.0.0.1:" + this.servicePort; } }