From 98bc04b59d67f5190affd1b64fe559d100d3fd19 Mon Sep 17 00:00:00 2001 From: 1549469775 <1549469775@qq.com> Date: Mon, 26 Jul 2021 17:15:24 +0800 Subject: [PATCH] add --- package-lock.json | 24 +++-- package.json | 28 +++--- script/aa.js | 158 +++++++++++++++++++++++++++++++ script/build-main.ts | 70 -------------- script/build.ts | 102 ++++++++++++++++++++ script/dev-runner.js | 158 ------------------------------- script/dev-runner.ts | 111 ++++++++++++++++++++++ script/utils.ts | 1 + src/common/patch.ts | 5 +- src/main/index.ts | 51 +++++----- src/render/AppRouter.tsx | 4 +- src/render/index.html | 2 + src/render/main.tsx | 2 - src/render/views/About/index.tsx | 14 ++- src/render/views/Home/Header.tsx | 86 ----------------- src/render/views/Home/index.tsx | 34 +------ src/render/views/Login/index.module.scss | 27 ------ test.js | 39 +++++++- vite.config.ts | 8 +- windi.config.ts | 15 --- 20 files changed, 492 insertions(+), 447 deletions(-) create mode 100644 script/aa.js delete mode 100644 script/build-main.ts create mode 100644 script/build.ts delete mode 100644 script/dev-runner.js create mode 100644 script/dev-runner.ts delete mode 100644 src/render/views/Home/Header.tsx delete mode 100644 windi.config.ts diff --git a/package-lock.json b/package-lock.json index 6d7e82b..0e51dac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1343,8 +1343,9 @@ }, "@types/node": { "version": "15.14.3", - "resolved": "https://registry.nlark.com/@types/node/download/@types/node-15.14.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.14.3.tgz", - "integrity": "sha1-MwdjuXPQrKy3/czHWU4fsoHtGxw=" + "resolved": "https://registry.nlark.com/@types/node/download/@types/node-15.14.3.tgz?cache=0&sync_timestamp=1627257813519&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.14.3.tgz", + "integrity": "sha1-MwdjuXPQrKy3/czHWU4fsoHtGxw=", + "dev": true }, "@types/normalize-package-data": { "version": "2.4.1", @@ -5844,9 +5845,9 @@ } }, "rollup": { - "version": "2.53.3", - "resolved": "https://registry.nlark.com/rollup/download/rollup-2.53.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frollup%2Fdownload%2Frollup-2.53.3.tgz", - "integrity": "sha1-FLDlfwh01K0jvbsTBQz3C80eq/c=", + "version": "2.54.0", + "resolved": "https://registry.nlark.com/rollup/download/rollup-2.54.0.tgz", + "integrity": "sha1-meqBbo6bHGrzq5V6TnqPeNvYd3M=", "requires": { "fsevents": "~2.3.2" } @@ -6526,6 +6527,17 @@ "yn": "3.1.1" } }, + "tsconfig-paths": { + "version": "3.10.1", + "resolved": "https://registry.nlark.com/tsconfig-paths/download/tsconfig-paths-3.10.1.tgz?cache=0&sync_timestamp=1625590062133&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftsconfig-paths%2Fdownload%2Ftsconfig-paths-3.10.1.tgz", + "integrity": "sha1-ea5npowVKJ/fXFHLdPOXUi15Xtc=", + "dev": true, + "requires": { + "json5": "^2.2.0", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, "tslib": { "version": "2.1.0", "resolved": "https://registry.nlark.com/tslib/download/tslib-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-2.1.0.tgz", @@ -6748,7 +6760,7 @@ }, "vite": { "version": "2.4.3", - "resolved": "https://registry.nlark.com/vite/download/vite-2.4.3.tgz?cache=0&sync_timestamp=1626783291368&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvite%2Fdownload%2Fvite-2.4.3.tgz", + "resolved": "https://registry.nlark.com/vite/download/vite-2.4.3.tgz", "integrity": "sha1-/kqnjp3X02vLEuzL1SMTsmz633c=", "requires": { "esbuild": "^0.12.8", diff --git a/package.json b/package.json index 33cdd97..baf6ca7 100644 --- a/package.json +++ b/package.json @@ -4,15 +4,18 @@ "description": "description", "main": "dist/electron/entry.js", "scripts": { - "deva": "electron-forge start --inspect-electron --app-path dist/electron/entry.js", - "dev": "npm run dev:all", + "dev": "ts-node -r tsconfig-paths/register script/dev-runner --env=development --watch", + "build": "ts-node -r tsconfig-paths/register script/build --env=production && npm run package", + + + "devaa": "npm run dev:all", "dev:all": "concurrently -n=vue,ele -c=green,blue \"npm run dev:vue\" \"npm run dev:ele\"", "dev:vue": "vite", "dev:ele": "node -r ts-node/register script/build-main --env=development --watch", "dev:test": "electron-forge start --inspect-electron", "package": "electron-forge package", "make": "electron-forge make", - "build": "tsc && vite build", + "buildaa": "tsc && vite build", "serve": "vite preview" }, "keywords": [], @@ -30,6 +33,7 @@ "@rollup/plugin-node-resolve": "^13.0.4", "@rollup/plugin-typescript": "^8.2.3", "@types/minimist": "^1.2.2", + "@types/node": "^15.14.3", "cfonts": "^2.9.3", "chalk": "^4.1.1", "concurrently": "^6.2.0", @@ -37,12 +41,17 @@ "electron": "^13.1.7", "execa": "^5.1.1", "ts-node": "^10.1.0", + "tsconfig-paths": "^3.10.1", "vitejs-plugin-electron": "^0.1.3" }, "dependencies": { - "electron-squirrel-startup": "^1.0.0", + "@types/react": "^17.0.0", + "@types/react-dom": "^17.0.0", + "@types/react-router-dom": "^5.1.7", + "@vitejs/plugin-react-refresh": "^1.3.1", "axios": "^0.21.1", "classnames": "^2.3.1", + "electron-squirrel-startup": "^1.0.0", "i18next": "^20.3.4", "i18next-browser-languagedetector": "^6.1.2", "react": "^17.0.0", @@ -51,17 +60,12 @@ "react-redux": "^7.2.4", "react-router-dom": "^5.2.0", "redux": "^4.1.0", - "redux-saga": "^1.1.3", - "styled-jsx": "^3.4.4", - "@types/node": "^15.12.5", - "@types/react": "^17.0.0", - "@types/react-dom": "^17.0.0", - "@types/react-router-dom": "^5.1.7", - "@vitejs/plugin-react-refresh": "^1.3.1", "redux-devtools": "^3.7.0", + "redux-saga": "^1.1.3", "sass": "^1.35.1", + "styled-jsx": "^3.4.4", "typescript": "^4.3.2", - "vite": "^2.3.8", + "vite": "^2.4.3", "vite-plugin-windicss": "^1.2.0", "windicss": "^3.1.3" }, diff --git a/script/aa.js b/script/aa.js new file mode 100644 index 0000000..0edd945 --- /dev/null +++ b/script/aa.js @@ -0,0 +1,158 @@ +// @ts-nocheck +const electron = require("electron") +const execa = require("execa") +const vite = require("vite") +const path = require("path") +const fs = require("fs") +const os = require("os") +const esbuild = require("esbuild") +const { say } = require("cfonts") +const { spawn } = require("child_process") +const chalk = require("chalk") + +function getEnvScript () { + let script = `process.env={...process.env};` + script += `process.env.RES_DIR = require("path").join(require("path").dirname(process.execPath),"resources/resource/release")` + return script +} + +async function buildRender() { + const subprocess = execa("vite",['-c','vite.config.ts']).stdout.pipe(process.stdout);; + setTimeout(() => { + subprocess.killed(); + }, 1000); + + try { + await subprocess; + } catch (error) { + console.log(subprocess.killed); // true + console.log(error.isCanceled); // true + } + return + let options = { + root: path.join(__dirname, "../src/render"), + enableEsbuild: true, + minify: false, + resolve:{ + alias: [ + { find: "@", replacement: path.resolve(__dirname, "src/render") }, + { find: "@render", replacement: path.resolve(__dirname, "src/render") }, + { find: "@main", replacement: path.resolve(__dirname, "src/main") }, + { find: "@src", replacement: path.resolve(__dirname, "src/src") }, + { find: "@root", replacement: __dirname }, + ], + }, + optimizeDeps: { + exclude: ["process"], + }, + } + await vite.build(options) + // let htmlPath = path.join(__dirname, "../dist/electron", "index.html") + // let html = fs.readFileSync(htmlPath, { encoding: "utf8" }) + // html = html.replace("", ``) + // fs.writeFileSync(htmlPath, html) +} + +function buildMain() { + let outfile = path.join(process.cwd(), "dist/electron/entry.js") + let entryFilePath = path.join(process.cwd(), "src/main/index.js") + esbuild.buildSync({ + entryPoints: [entryFilePath], + outfile, + minify: false, + bundle: true, + platform: "node", + sourcemap: false, + external: ["electron"], + }) + let js = `${getEnvScript()}${os.EOL}${fs.readFileSync(outfile)}` + fs.writeFileSync(outfile, js) +} + +function startElectron() { + var args = ["--inspect=5858", path.join(__dirname, "../dist/electron/main.js")] + + // detect yarn or npm and process commandline args accordingly + if (process.env.npm_execpath.endsWith("yarn.js")) { + args = args.concat(process.argv.slice(3)) + } else if (process.env.npm_execpath.endsWith("npm-cli.js")) { + args = args.concat(process.argv.slice(2)) + } + + // electronProcess = spawn(electron, args) + + // electronProcess.stdout.on("data", data => { + // electronLog(data, "blue") + // }) + // electronProcess.stderr.on("data", data => { + // electronLog(data, "red") + // }) + + // electronProcess.on("close", () => { + // if (!manualRestart) process.exit() + // }) +} + +function logStats(proc, data) { + let log = "" + + log += chalk.yellow.bold(`┏ ${proc} Process ${new Array(19 - proc.length + 1).join("-")}`) + log += "\n\n" + + if (typeof data === "object") { + data + .toString({ + colors: true, + chunks: false, + }) + .split(/\r?\n/) + .forEach(line => { + log += " " + line + "\n" + }) + } else { + log += ` ${data}\n` + } + + log += "\n" + chalk.yellow.bold(`┗ ${new Array(28 + 1).join("-")}`) + "\n" + + console.log(log) +} + +function electronLog(data, color) { + let log = "" + data = data.toString().split(/\r?\n/) + data.forEach(line => { + log += ` ${line}\n` + }) + if (/[0-9A-z]+/.test(log)) { + console.log( + chalk[color].bold("┏ Electron -------------------") + "\n\n" + log + chalk[color].bold("┗ ----------------------------") + "\n" + ) + } +} + +function greeting() { + const cols = process.stdout.columns + let text = "" + + if (cols > 104) text = "electron-vue" + else if (cols > 76) text = "electron-|vue" + else text = '' + + if (text) { + say(text, { + colors: ["yellow"], + font: "simple3d", + space: false, + }) + } else console.log(chalk.yellow.bold("\n electron-vue")) + console.log(chalk.blue(" getting ready...") + "\n") +} + +function init() { + greeting() + // buildMain() + buildRender() +} + +init() diff --git a/script/build-main.ts b/script/build-main.ts deleted file mode 100644 index 8e3b388..0000000 --- a/script/build-main.ts +++ /dev/null @@ -1,70 +0,0 @@ -/** - * electron 打包 - */ - -import { join } from "path" -import { exec, spawn, ChildProcess } from "child_process" -import { watch, rollup, OutputOptions } from "rollup" -import electron from "electron" -import { waitOn } from "./utils" -import options from "./rollup.config" -import { main } from "../package.json" -const ora = require("ora") -const dotenv = require("dotenv") -const chalk = require("chalk") -const minimist = require("minimist") - -dotenv.config({ path: join(__dirname, "../.env") }) -const argv = minimist(process.argv.slice(2)) -const opts = options(argv.env) -const TAG = "[build-main.ts]" -const spinner = ora(`${TAG} Electron build...`) - - - -if (argv.watch) { - waitOn({ port: process.env.PORT as string }).then(msg => { - const watcher = watch(opts) - let child: ChildProcess | null - let manualRestart = false - watcher.on("change", filename => { - const log = chalk.green(`change -- ${filename}`) - console.log(TAG, log) - }) - watcher.on("event", ev => { - if (ev.code === "END") { - if (child && child.kill) { - console.log(child.pid) - manualRestart = true - // child.pid - // child.kill() - process.kill( child.pid) - child = null - setTimeout(() => { - manualRestart = false - }, 5000) - } - child = exec(`electron-forge start --inspect-electron --app-path ${join(__dirname, `../${main}`)}`, { - env: Object.assign(process.env, { NODE_ENV: argv.env }), - }) - child.on("close", () => { - if (!manualRestart) process.exit() - }) - } else if (ev.code === "ERROR") { - console.log(ev.error) - } - }) - }) -} else { - spinner.start() - rollup(opts) - .then(build => { - spinner.stop() - console.log(TAG, chalk.green("Electron build successed.")) - build.write(opts.output as OutputOptions) - }) - .catch(error => { - spinner.stop() - console.log(`\n${TAG} ${chalk.red("构建报错")}\n`, error, "\n") - }) -} diff --git a/script/build.ts b/script/build.ts new file mode 100644 index 0000000..ff0fa09 --- /dev/null +++ b/script/build.ts @@ -0,0 +1,102 @@ +// @ts-nocheck + +import { main } from "../package.json" +import { join } from "path" +import * as electron from "electron" +import * as dotenv from "dotenv" +import * as ora from "ora" +import * as chalk from "chalk" +import * as minimist from "minimist" + +import { exec, spawn, ChildProcess } from "child_process" +import { watch, rollup, OutputOptions } from "rollup" +import { waitOn } from "./utils" +import options from "./rollup.config" +// 注入环境变量 +dotenv.config({ path: join(__dirname, "../.env") }) +// 解析命令行参数 +const argv = minimist(process.argv.slice(2)) +// rollup配置 +const opts = options(argv.env) +const TAG = "[build-main.ts]" +// 加载图 +const spinner = ora(`${TAG} Electron build...`) + +function buildVite() { + return new Promise((resolve, reject) => { + let viteProcess = spawn("node", [join(__dirname, "../node_modules/vite/bin/vite.js"), "build"], { + stdio: "pipe", + env: Object.assign(process.env, { NODE_ENV: argv.env }), + }) + if (viteProcess) { + viteProcess.stdout.on("end", data => { + console.log(`\n[vite build end]`) + resolve(viteProcess) + }) + viteProcess.stderr.on("data", data => { + console.error(`\n[vite build err]: ${data}`) + reject() + }) + } else { + reject() + } + }) +} +function tscCheck() { + return new Promise((resolve, reject) => { + let tscProcess = spawn("node", [join(__dirname, "../node_modules/typescript/bin/tsc")], { + stdio: "pipe", + env: Object.assign(process.env, { NODE_ENV: argv.env }), + }) + if (tscProcess) { + tscProcess.stdout.on("end", data => { + console.log(`[tsc check end]`) + resolve(tscProcess) + }) + tscProcess.stderr.on("data", data => { + console.error(`[tsc check err]: ${data}`) + reject() + }) + } else { + reject() + } + }) +} +async function buildMain() { + try { + const build = await rollup(opts) + build.write(opts.output as OutputOptions) + } catch (error) { + console.log(`\n${TAG} ${chalk.red("构建报错")}\n`, error, "\n") + } +} + +function buildElectron() { + return new Promise((resolve, reject) => { + let tscProcess = spawn("node", [join(__dirname, "../node_modules/@electron-forge/cli/dist/electron-forge.js"), "make"], { + stdio: "pipe", + env: Object.assign(process.env, { NODE_ENV: argv.env }), + }) + if (tscProcess) { + tscProcess.stdout.on("data", data => { + console.log(`[electron build]: ${data}`) + }) + tscProcess.stdout.on("end", data => { + console.log(`[electron build end]`) + resolve(tscProcess) + }) + tscProcess.stderr.on("data", data => { + console.error(`[electron build err]: ${data}`) + reject() + }) + } else { + reject() + } + }) +} +;(async () => { + await tscCheck() + await buildVite() + await buildMain() + // await buildElectron() +})() diff --git a/script/dev-runner.js b/script/dev-runner.js deleted file mode 100644 index 0edd945..0000000 --- a/script/dev-runner.js +++ /dev/null @@ -1,158 +0,0 @@ -// @ts-nocheck -const electron = require("electron") -const execa = require("execa") -const vite = require("vite") -const path = require("path") -const fs = require("fs") -const os = require("os") -const esbuild = require("esbuild") -const { say } = require("cfonts") -const { spawn } = require("child_process") -const chalk = require("chalk") - -function getEnvScript () { - let script = `process.env={...process.env};` - script += `process.env.RES_DIR = require("path").join(require("path").dirname(process.execPath),"resources/resource/release")` - return script -} - -async function buildRender() { - const subprocess = execa("vite",['-c','vite.config.ts']).stdout.pipe(process.stdout);; - setTimeout(() => { - subprocess.killed(); - }, 1000); - - try { - await subprocess; - } catch (error) { - console.log(subprocess.killed); // true - console.log(error.isCanceled); // true - } - return - let options = { - root: path.join(__dirname, "../src/render"), - enableEsbuild: true, - minify: false, - resolve:{ - alias: [ - { find: "@", replacement: path.resolve(__dirname, "src/render") }, - { find: "@render", replacement: path.resolve(__dirname, "src/render") }, - { find: "@main", replacement: path.resolve(__dirname, "src/main") }, - { find: "@src", replacement: path.resolve(__dirname, "src/src") }, - { find: "@root", replacement: __dirname }, - ], - }, - optimizeDeps: { - exclude: ["process"], - }, - } - await vite.build(options) - // let htmlPath = path.join(__dirname, "../dist/electron", "index.html") - // let html = fs.readFileSync(htmlPath, { encoding: "utf8" }) - // html = html.replace("", ``) - // fs.writeFileSync(htmlPath, html) -} - -function buildMain() { - let outfile = path.join(process.cwd(), "dist/electron/entry.js") - let entryFilePath = path.join(process.cwd(), "src/main/index.js") - esbuild.buildSync({ - entryPoints: [entryFilePath], - outfile, - minify: false, - bundle: true, - platform: "node", - sourcemap: false, - external: ["electron"], - }) - let js = `${getEnvScript()}${os.EOL}${fs.readFileSync(outfile)}` - fs.writeFileSync(outfile, js) -} - -function startElectron() { - var args = ["--inspect=5858", path.join(__dirname, "../dist/electron/main.js")] - - // detect yarn or npm and process commandline args accordingly - if (process.env.npm_execpath.endsWith("yarn.js")) { - args = args.concat(process.argv.slice(3)) - } else if (process.env.npm_execpath.endsWith("npm-cli.js")) { - args = args.concat(process.argv.slice(2)) - } - - // electronProcess = spawn(electron, args) - - // electronProcess.stdout.on("data", data => { - // electronLog(data, "blue") - // }) - // electronProcess.stderr.on("data", data => { - // electronLog(data, "red") - // }) - - // electronProcess.on("close", () => { - // if (!manualRestart) process.exit() - // }) -} - -function logStats(proc, data) { - let log = "" - - log += chalk.yellow.bold(`┏ ${proc} Process ${new Array(19 - proc.length + 1).join("-")}`) - log += "\n\n" - - if (typeof data === "object") { - data - .toString({ - colors: true, - chunks: false, - }) - .split(/\r?\n/) - .forEach(line => { - log += " " + line + "\n" - }) - } else { - log += ` ${data}\n` - } - - log += "\n" + chalk.yellow.bold(`┗ ${new Array(28 + 1).join("-")}`) + "\n" - - console.log(log) -} - -function electronLog(data, color) { - let log = "" - data = data.toString().split(/\r?\n/) - data.forEach(line => { - log += ` ${line}\n` - }) - if (/[0-9A-z]+/.test(log)) { - console.log( - chalk[color].bold("┏ Electron -------------------") + "\n\n" + log + chalk[color].bold("┗ ----------------------------") + "\n" - ) - } -} - -function greeting() { - const cols = process.stdout.columns - let text = "" - - if (cols > 104) text = "electron-vue" - else if (cols > 76) text = "electron-|vue" - else text = '' - - if (text) { - say(text, { - colors: ["yellow"], - font: "simple3d", - space: false, - }) - } else console.log(chalk.yellow.bold("\n electron-vue")) - console.log(chalk.blue(" getting ready...") + "\n") -} - -function init() { - greeting() - // buildMain() - buildRender() -} - -init() diff --git a/script/dev-runner.ts b/script/dev-runner.ts new file mode 100644 index 0000000..7fd75d5 --- /dev/null +++ b/script/dev-runner.ts @@ -0,0 +1,111 @@ +// @ts-nocheck + +import { main } from "../package.json" +import { join } from "path" +import * as electron from "electron" +import * as dotenv from "dotenv" +import * as ora from "ora" +import * as chalk from "chalk" +import * as minimist from "minimist" + +import { exec, spawn, ChildProcess } from "child_process" +import { watch, rollup, OutputOptions } from "rollup" +import { waitOn } from "./utils" +import options from "./rollup.config" +// 注入环境变量 +dotenv.config({ path: join(__dirname, "../.env") }) +// 解析命令行参数 +const argv = minimist(process.argv.slice(2)) +// rollup配置 +const opts = options(argv.env) +const TAG = "[build-main.ts]" +// 加载图 +const spinner = ora(`${TAG} Electron build...`) +console.log(join(__dirname, "../node_modules/.bin/vite")) + +function runVite() { + return new Promise((resolve, reject) => { + let viteProcess = spawn("node", [`D:/1XYX/pro/vite-electron/node_modules/vite/bin/vite.js`], { + stdio: "pipe", + env: Object.assign(process.env, { NODE_ENV: argv.env }), + }) + if (viteProcess) { + let isReady = false + viteProcess.stdout.on("data", data => { + // console.log(`${data}`) + if (!isReady && data.indexOf("ready") != -1) { + resolve(viteProcess) + } + }) + + viteProcess.stderr.on("data", data => { + console.error(`[vite err]: ${data}`) + reject() + }) + + viteProcess.on("close", code => { + console.log(`[vite close]: exited with code ${code}`) + reject() + }) + } else { + reject() + } + }) +} + +function runElectron() { + return new Promise((resolve, reject) => { + let electronProcess = spawn(electron as unknown as string, [join(__dirname, `../${main}`)], { + stdio: "pipe", + env: Object.assign(process.env, { NODE_ENV: argv.env }), + }) + if (electronProcess) { + resolve(electronProcess) + } else { + reject() + } + }) +} + +;(async () => { + let vitePorcess = await runVite() + console.log('[vite]', chalk.green(`vite ready.`)) + + const watcher = watch(opts) + let child: ChildProcess | null + let manualRestart = false + watcher.on("change", filename => { + const log = chalk.green(`change -- ${filename}`) + console.log(TAG, log) + }) + watcher.on("event",async ev => { + if (ev.code === "END") { + if (child && child.kill) { + manualRestart = true + child.kill() + child = null + setTimeout(() => { + manualRestart = false + }, 5000) + } + try { + child = await runElectron() + console.log('[electron]', chalk.green(`electron ready.`)) + child.on("close", () => { + if (!manualRestart) { + vitePorcess.kill() + child.kill() + process.exit() + } + }) + } catch (ev) { + console.log(ev.error) + vitePorcess.kill() + child.kill() + process.exit() + } + } else if (ev.code === "ERROR") { + console.log(ev.error) + } + }) +})() diff --git a/script/utils.ts b/script/utils.ts index cee22e6..10a6a59 100644 --- a/script/utils.ts +++ b/script/utils.ts @@ -1,6 +1,7 @@ import { builtinModules } from "module" import { get } from "http" import { green } from "chalk" +import { exec, spawn, ChildProcess } from "child_process" /** 轮询监听 vite 启动 */ export function waitOn(arg0: { port: string | number; interval?: number }) { diff --git a/src/common/patch.ts b/src/common/patch.ts index 602277a..8710f20 100644 --- a/src/common/patch.ts +++ b/src/common/patch.ts @@ -1,4 +1,7 @@ /** * !!! ensure process.cwd() correct */ - process.chdir(__dirname.slice(0, __dirname.lastIndexOf('dist'))) +process.chdir(__dirname.slice(0, __dirname.lastIndexOf('dist'))) + + +export {}; \ No newline at end of file diff --git a/src/main/index.ts b/src/main/index.ts index 7b96ccb..2879d8e 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -1,36 +1,31 @@ /** * electron 主文件 */ -console.log('2222'); - import '@src/common/patch' - const {join} = require("path") - const {app,BrowserWindow} = require("electron") - const dotenv = require("dotenv") +import "@src/common/patch" +import * as dotenv from "dotenv" +const { join } = require("path") +dotenv.config({ path: join(__dirname, "../../.env") }) +const { app, BrowserWindow } = require("electron") - dotenv.config({ path: join(__dirname, '../../../.env') }) +let win - let win +function createWin() { + // 创建浏览器窗口dsa + win = new BrowserWindow({ + width: 1024, + height: 768, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + preload: join(__dirname, "../../src/preload/index.js"), + }, + }) - console.log('1232asd啊2aasdaaaa'); + const URL = app.isPackaged + ? `file://${join(__dirname, "./index.html")}` // vite 构建后的静态文件地址 + : `http://localhost:${process.env.PORT}/#/login` // vite 启动的服务器地址 - function createWin() { - console.log('萨达'); - // 创建浏览器窗口 - win = new BrowserWindow({ - width: 1024, - height: 768, - webPreferences: { - nodeIntegration: true, - contextIsolation: false, - preload: join(__dirname, '../../src/preload/index.js'), - }, - }) + win?.loadURL(URL) +} - const URL = app.isPackaged - ? `file://${join(__dirname, '../render/index.html')}` // vite 构建后的静态文件地址 - : `http://localhost:${process.env.PORT}/login` // vite 启动的服务器地址 - - win?.loadURL(URL) - } - - app.whenReady().then(createWin) +app.whenReady().then(createWin) diff --git a/src/render/AppRouter.tsx b/src/render/AppRouter.tsx index a6cb2d0..60c73e0 100644 --- a/src/render/AppRouter.tsx +++ b/src/render/AppRouter.tsx @@ -1,4 +1,4 @@ -import { BrowserRouter as Router, Switch, Redirect, Route, Link } from "react-router-dom" +import { HashRouter as Router, Switch, Redirect, Route, Link } from "react-router-dom" import React, { Fragment } from "react" import { pageList } from "@/plugins/pageHoc" @@ -45,8 +45,6 @@ function RouteMap(props: any) { } export default function () { - console.log(pageList) - return ( diff --git a/src/render/index.html b/src/render/index.html index 990cddf..8fc452c 100644 --- a/src/render/index.html +++ b/src/render/index.html @@ -4,6 +4,8 @@ + + Vite App diff --git a/src/render/main.tsx b/src/render/main.tsx index 51c303c..c514cb2 100644 --- a/src/render/main.tsx +++ b/src/render/main.tsx @@ -4,8 +4,6 @@ import React from "react"; import ReactDOM from "react-dom"; import "@/plugins/i18n" import {Provider} from 'react-redux' -import "virtual:windi-devtools"; -import "virtual:windi.css"; import Router from "./AppRouter"; diff --git a/src/render/views/About/index.tsx b/src/render/views/About/index.tsx index 0e078a2..01063f3 100644 --- a/src/render/views/About/index.tsx +++ b/src/render/views/About/index.tsx @@ -1,17 +1,21 @@ import React from "react" -import { useLocation, Route, Switch } from "react-router-dom" +import { useLocation, Route, Switch, useHistory } from "react-router-dom" function Test() { return
test
} export default function About(props: any) { + let history = useHistory() let location = useLocation() - console.log(location) - console.log(props) + function back(){ + console.log(1231); + + history.goBack() + } return ( -
-
阿萨 阿松大asdasd
+
+
back()}>阿萨 阿松大asdasd
22{props.children}
diff --git a/src/render/views/Home/Header.tsx b/src/render/views/Home/Header.tsx deleted file mode 100644 index ec43097..0000000 --- a/src/render/views/Home/Header.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import React, { useState } from "react" - -export default () => { - const title = "TESAaT" - const [leftMenuList, setLeftMenuList] = useState([ - { title: "首页", path: "/" }, - { title: "角色", children: [{ title: "月儿", path: "/about" }] }, - ]) - - const [rightMenuList, setRightMenuList] = useState([ - { - title: "登录/注册", - click: true, - }, - ]) - - function onLeftClick(e: any, menu: any, allMenu: any) { - if (menu.click || !menu.path) { - e.preventDefault() - } - } - - function onRightClick(e: any, menu: any, allMenu: any) { - if (menu.click || !menu.path) { - e.preventDefault() - } - } - - return ( -
-
-
-
{title}
- - -
-
-
-
- ) -} diff --git a/src/render/views/Home/index.tsx b/src/render/views/Home/index.tsx index ae17f5f..a86ca5f 100644 --- a/src/render/views/Home/index.tsx +++ b/src/render/views/Home/index.tsx @@ -1,7 +1,7 @@ import { addTodo, removeTodo } from "@/store/action/todo" import React, { FormEvent, useRef, useContext } from "react" import { connect } from "react-redux" -import Header from "./Header" +import { NavLink } from "react-router-dom" export interface HomeProps { add(text: string): void @@ -24,35 +24,9 @@ function Home(props: HomeProps) { return (
-
-
-
-
-
addOne(e)}> - - -
- {todo.map((v: ITodo) => { - return ( -

remove(v.id)} key={v.id}> - {v.text} - {v.id} -

- ) - })} -
-
-
-
-
- {[...Array(100)] - .map((v, i) => i) - .map(v => { - return

v

- })} -
-
-
+ home
+ about
+ login
) } diff --git a/src/render/views/Login/index.module.scss b/src/render/views/Login/index.module.scss index 0cf0939..b4e2f73 100644 --- a/src/render/views/Login/index.module.scss +++ b/src/render/views/Login/index.module.scss @@ -5,33 +5,6 @@ $color: #53e3a6; font-family: "Source Sans Pro", sans-serif; color: white; font-weight: 300; - - ::-webkit-input-placeholder { - /* WebKit browsers */ - font-family: "Source Sans Pro", sans-serif; - color: white; - font-weight: 300; - } - :-moz-placeholder { - /* Mozilla Firefox 4 to 18 */ - font-family: "Source Sans Pro", sans-serif; - color: white; - opacity: 1; - font-weight: 300; - } - ::-moz-placeholder { - /* Mozilla Firefox 19+ */ - font-family: "Source Sans Pro", sans-serif; - color: white; - opacity: 1; - font-weight: 300; - } - :-ms-input-placeholder { - /* Internet Explorer 10+ */ - font-family: "Source Sans Pro", sans-serif; - color: white; - font-weight: 300; - } .wrapper { background: #50a3a2; background: -webkit-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); diff --git a/test.js b/test.js index 6199430..e3044ae 100644 --- a/test.js +++ b/test.js @@ -16,5 +16,42 @@ // stdio: 'inherit', // env: Object.assign(process.env, { NODE_ENV: "development" }), // }) +const chalk = require("chalk") +const electron = require("electron") +const { spawn } = require("child_process") +const { join } = require("path") +console.log(electron); -process.kill(19656) +// let child = spawn( +// electron, +// [join(__dirname, `dist/electron/entry.js`)] +// ) + +// if(child){ +// setTimeout(() => { +// child.kill() +// }, 5000); +// } + +function runVite () { + return new Promise((resolve, reject) => { + let viteProcess = spawn('node', [`D:/1XYX/pro/vite-electron/node_modules/vite/bin/vite.js`]) + let isReady = false; + viteProcess.stdout.on('data', (data) => { + console.log(`${data}`); + if (!isReady && data.indexOf("ready") != -1) { + resolve() + } + }); + + viteProcess.stderr.on('data', (data) => { + console.error(`[vite err]: ${data}`); + reject() + }); + + viteProcess.on('close', (code) => { + console.log(`[vite close]: exited with code ${code}`); + reject() + }); + }) +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 92e7466..07a03b8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,9 +2,9 @@ import { defineConfig } from "vite" import reactRefresh from "@vitejs/plugin-react-refresh" -import WindiCSS from "vite-plugin-windicss" +// import WindiCSS from "vite-plugin-windicss" const { resolve, join } = require("path") -import electron from "vitejs-plugin-electron" +// import electron from "vitejs-plugin-electron" require('dotenv').config({ path: join(__dirname, '.env') }) @@ -12,6 +12,7 @@ require('dotenv').config({ path: join(__dirname, '.env') }) // https://vitejs.dev/config/ export default defineConfig({ root: resolve(__dirname, "src/render"), + base: "./", css: { preprocessorOptions: { scss: { @@ -39,5 +40,6 @@ export default defineConfig({ "@root": __dirname, }, }, - plugins: [WindiCSS(), reactRefresh(), electron()], + // electron() + plugins: [reactRefresh(),], }) diff --git a/windi.config.ts b/windi.config.ts deleted file mode 100644 index fc72cf4..0000000 --- a/windi.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from "vite-plugin-windicss"; -function range(size, startAt = 1) { - return Array.from(Array(size).keys()).map((i) => i + startAt); -} -export default defineConfig({ - preflight: false, - safelist: [ - range(30).map((i) => `p-${i}`), // p-1 to p-3 - range(10).map((i) => `mt-${i}`), // mt-1 to mt-10 - ], - extract: { - include: ['src/render/**/*.{vue,html,jsx,tsx}'], - exclude: ['node_modules', '.git'], - }, -});