1549469775 4 years ago
parent
commit
98bc04b59d
  1. 24
      package-lock.json
  2. 28
      package.json
  3. 0
      script/aa.js
  4. 70
      script/build-main.ts
  5. 102
      script/build.ts
  6. 111
      script/dev-runner.ts
  7. 1
      script/utils.ts
  8. 5
      src/common/patch.ts
  9. 51
      src/main/index.ts
  10. 4
      src/render/AppRouter.tsx
  11. 2
      src/render/index.html
  12. 2
      src/render/main.tsx
  13. 14
      src/render/views/About/index.tsx
  14. 86
      src/render/views/Home/Header.tsx
  15. 34
      src/render/views/Home/index.tsx
  16. 27
      src/render/views/Login/index.module.scss
  17. 39
      test.js
  18. 8
      vite.config.ts
  19. 15
      windi.config.ts

24
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",

28
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"
},

0
script/dev-runner.js → script/aa.js

70
script/build-main.ts

@ -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
// <number>child.pid
// child.kill()
process.kill( <number>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")
})
}

102
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()
})()

111
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)
}
})
})()

1
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 }) {

5
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 {};

51
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)

4
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 (
<Router>
<RouteMap routes={routes}></RouteMap>

2
src/render/index.html

@ -4,6 +4,8 @@
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self' https: 'unsafe-inline'; style-src * 'unsafe-inline'; font-src * data:;"> -->
<!-- <meta http-equiv="X-Content-Security-Policy" content="default-src 'self' https: 'unsafe-inline'; style-src * 'unsafe-inline'; font-src * data:;"> -->
<title>Vite App</title>
</head>
<body>

2
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";

14
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 <div>test</div>
}
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 (
<div className="container mx-auto">
<div> asdasd</div>
<div className="">
<div onClick={() =>back()}> asdasd</div>
<div>22{props.children}</div>
<Route path="/about/aa" exact={true}>
<Test></Test>

86
src/render/views/Home/Header.tsx

@ -1,86 +0,0 @@
import React, { useState } from "react"
export default () => {
const title = "TESAaT"
const [leftMenuList, setLeftMenuList] = useState<any[]>([
{ title: "首页", path: "/" },
{ title: "角色", children: [{ title: "月儿", path: "/about" }] },
])
const [rightMenuList, setRightMenuList] = useState<any[]>([
{
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 (
<div className="">
<div className="shadow bg-white h-12 leading-12 fixed top-0 left-0 right-0">
<div className="container h-full clearfix mx-auto">
<div className="h-full float-left cursor-pointer text-size-25px flex items-center">{title}</div>
<ul className="h-full float-left ml-10">
{leftMenuList.map((menu, index) => {
return (
<li className="h-full float-left group relative" key={index}>
<a
href={menu.path ? menu.path : "#"}
onClick={e => onLeftClick(e, menu, leftMenuList)}
className="h-full px-5 hover:(bg-cool-gray-200 text-black) text-gray-400 text-size-14px flex items-center"
>
{menu.title}
</a>
{menu.children && menu.children.length && (
<ul className="absolute overflow-hidden transition-all duration-150 max-h-0 group-hover:max-h-500px left-0 top-full shadow">
{menu.children.map((subMenu: any, jndex: number) => {
return (
<li key={jndex} className="float-left relative">
<a
href={subMenu.path ? subMenu.path : "#"}
onClick={e => onLeftClick(e, subMenu, leftMenuList)}
className="h-12 px-5 hover:(bg-cool-gray-200 text-black) text-gray-400 text-size-14px flex items-center"
>
{subMenu.title}
</a>
</li>
)
})}
</ul>
)}
</li>
)
})}
</ul>
<ul className="float-right h-full">
{rightMenuList.map((menu, index) => {
return (
<li key={index} className="h-full float-left relative cursor-pointer">
<a
href={menu.path ? menu.path : "#"}
className="h-full px-5 text-size-14px flex items-center"
onClick={e => onRightClick(e, menu, rightMenuList)}
>
{menu.title}
</a>
</li>
)
})}
</ul>
</div>
</div>
<div className="h-12"></div>
</div>
)
}

34
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 (
<div>
<Header></Header>
<div>
<div className="bg-white min-h-100vh">
<div className="container clearfix mx-auto h-500px">
<form onSubmit={e => addOne(e)}>
<input ref={inputRef} type="text" />
<button type="submit">222aaaasaadd</button>
</form>
{todo.map((v: ITodo) => {
return (
<p onClick={() => remove(v.id)} key={v.id}>
{v.text}
{v.id}
</p>
)
})}
</div>
</div>
<div className="min-h-100vh"></div>
<div className="bg-white min-h-100vh">
<div className="container clearfix mx-auto">
{[...Array(100)]
.map((v, i) => i)
.map(v => {
return <p key={v}>v</p>
})}
</div>
</div>
</div>
<NavLink to="/home">home</NavLink> <br />
<NavLink to="/about">about</NavLink><br />
<NavLink to="/login">login</NavLink><br />
</div>
)
}

27
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%);

39
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()
});
})
}

8
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(),],
})

15
windi.config.ts

@ -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'],
},
});
Loading…
Cancel
Save