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 (
-
- )
-}
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 (
-
-
-
-
-
- {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'],
- },
-});