diff --git a/package.json b/package.json index 792b7dc..55abb6d 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "dev:ele": "node script/build --env=development --watch", "build:vue": "vite build", "build:ele": "node script/build --env=production", - "build": "npm run build:vue && npm run build:ele && electron-builder" + "build": "rm -rf dist && npm run build:vue && npm run build:ele && electron-builder" }, "build": { "appId": "308487730@qq.com", @@ -63,8 +63,8 @@ "minimist": "^1.2.5", "ora": "^5.0.0", "rollup-plugin-esbuild": "^2.4.2", - "typescript": "^3.9.7", - "vite": "^1.0.0-rc.1", + "typescript": "^4.0.3", + "vite": "^1.0.0-rc.4", "wait-on": "^5.2.0" }, "keywords": [ diff --git a/script/rollup.config.js b/script/rollup.config.js index 65f8e02..76c3c4a 100644 --- a/script/rollup.config.js +++ b/script/rollup.config.js @@ -59,7 +59,6 @@ module.exports = (env = 'production') => { 'https', 'path', 'electron', - 'electron-is-dev', ], } } diff --git a/src/main/index.ts b/src/main/index.ts index 3714c68..275e103 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -22,7 +22,7 @@ function createWin() { const URL = is_dev ? `http://localhost:${process.env.PORT}` // vite 启动的服务器地址 - : `file://${join(__dirname, '../../dist/render/index.html')}` // vite 构建后的静态文件地址 + : `file://${join(__dirname, '../render/index.html')}` // vite 构建后的静态文件地址 win.loadURL(URL) } diff --git a/src/render/main.ts b/src/render/main.ts index 1c87f8b..68abc35 100644 --- a/src/render/main.ts +++ b/src/render/main.ts @@ -1,11 +1,10 @@ import { createApp } from 'vue' import App from './App.vue' -import './index.css' // vite 会编译 import 的形式;所以 electron 及 node.js 内置模块用 require 形式 const { ipcRenderer } = require('electron') -const Store = require('electron-store') +import store from '/utils/store' -const store = new Store +import './index.css' console.log('ipcRenderer:', ipcRenderer) console.log('Store', store) diff --git a/src/render/utils/store.ts b/src/render/utils/store.ts new file mode 100644 index 0000000..1aba990 --- /dev/null +++ b/src/render/utils/store.ts @@ -0,0 +1,3 @@ +/*@replace = import Store from 'electron-store'*/const Store = require('electron-store') + +export default new Store diff --git a/tsconfig.json b/tsconfig.json index 909db97..b7d1edb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,8 +10,11 @@ "baseUrl": "./", "strict": true, "paths": { - "@/*": ["src/render/*"], - "root/*": ["/*"] + "/assets/*": ["src/render/assets/*"], + "/components/*": ["src/render/components/*"], + "/lib/*": ["src/render/lib/*"], + "/utils/*": ["src/render/utils/*"], + "/views/*": ["src/render/views/*"] }, "allowSyntheticDefaultImports": true }, diff --git a/vite.config.ts b/vite.config.ts index 8371a56..437154a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -15,12 +15,52 @@ const config: UserConfig = { outDir: join(__dirname, 'dist/render'), alias: { // 别名必须以 / 开头、结尾 - '/@/': root, + // '/@/': root, -- vite 内部在用,这里不能用了 + // '/root/': __dirname, -- vite 内部在用,这里不能用了 + '/assets/': join(__dirname, 'src/render/assets'), + '/components/': join(__dirname, 'src/render/components'), + '/lib/': join(__dirname, 'src/render/lib'), + '/utils/': join(__dirname, 'src/render/utils'), + '/views/': join(__dirname, 'src/render/views'), }, optimizeDeps: { // 这里不加也没事,用 require 的形式就能避开 import 被编译成 /@modules/fs?import // allowNodeBuiltins: ['electron-is-dev', 'electron-store', 'electron'] }, + rollupInputOptions: { + external: [ + 'crypto', + 'assert', + 'fs', + 'util', + 'os', + 'events', + 'child_process', + 'http', + 'https', + 'path', + 'electron', + ], + plugins: [ + { + name: '@rollup/plugin-replace-electron-store', + transform(code, id) { + // const Store = require('electron-store') + const electronStoreReg = /(const|let|var)[\n\s]+(\w+)[\n\s]*=[\n\s]*require\(["|']electron-store["|']\)/g + const res = code.match(electronStoreReg) + /*@replace = import Store from 'electron-store'*/ + // const replaceStore = /\/\*\s*@replace\s*=\s*([\S\s]+)\s*\*\//g + if (res) { + code = code.replace(electronStoreReg, `import $2 from 'electron-store'`) + } + return code + }, + } + ], + }, + rollupOutputOptions: { + format: 'commonjs', + }, } export default config