Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
"license": "MPL-2.0",
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint . --fix"
"lint:fix": "eslint . --fix",
"gui:dev": "cd packages/gui && pnpm dev"
},
"devDependencies": {
"@antfu/eslint-config": "^3.16.0",
Expand Down
4 changes: 2 additions & 2 deletions packages/gui/.env
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
VUE_APP_PUBLISH_URL=http://dev-sidecar.docmirror.cn/update/
VUE_APP_PUBLISH_PROVIDER=generic
VITE_PUBLISH_URL=http://dev-sidecar.docmirror.cn/update/
VITE_PUBLISH_PROVIDER=generic
1 change: 1 addition & 0 deletions packages/gui/.gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.DS_Store
node_modules
/dist
/out


# local env files
Expand Down
5 changes: 0 additions & 5 deletions packages/gui/babel.config.cjs

This file was deleted.

104 changes: 0 additions & 104 deletions packages/gui/electron-builder.config.cjs

This file was deleted.

85 changes: 85 additions & 0 deletions packages/gui/electron-builder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
appId: dev-sidecar
productName: dev-sidecar
artifactName: DevSidecar-${version}-${arch}.${ext}
copyright: Copyright © 2020-2026 Greper, WangLiang, CuteOmega

directories:
output: dist_electron
buildResources: build

files:
- from: out/main
to: out/main
filter: ['**/*']
- from: out/renderer
to: out/renderer
filter: ['**/*']
- from: out/preload
to: out/preload
filter: ['**/*']
- from: src/main/bridge
to: out/main
filter: ['mitmproxy.js']
- package.json
- extra/**/*

extraResources:
- from: extra
to: extra

afterPack: ./pkg/after-pack.cjs
afterAllArtifactBuild: ./pkg/after-all-artifact-build.cjs

nsis:
oneClick: false
perMachine: true
allowElevation: true
allowToChangeInstallationDirectory: true

win:
icon: build/icons/
target:
- target: nsis
arch:
- x64
- ia32
- arm64

linux:
icon: build/mac/
target:
- target: deb
arch:
- x64
- arm64
- armv7l
- target: AppImage
arch:
- x64
- arm64
- armv7l
- target: tar.gz
arch:
- x64
- arm64
- armv7l
- target: rpm
arch:
- x64
- arm64
- armv7l
- target: flatpak
arch:
- x64
appId: cn.docmirror.DevSidecar
category: System

mac:
icon: ./build/mac/icon.icns
target:
target: dmg
arch:
- x64
- arm64
- universal
category: public.app-category.developer-tools
106 changes: 106 additions & 0 deletions packages/gui/electron.vite.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { resolve } from 'path'
import fs from 'fs'

// 复制 mitmproxy.js 到输出目录的插件
function copyMitmproxyPlugin() {
return {
name: 'copy-mitmproxy',
closeBundle() {
const src = resolve(__dirname, 'src/main/bridge/mitmproxy.js')
const dest = resolve(__dirname, 'out/main/mitmproxy.js')
if (fs.existsSync(src)) {
fs.copyFileSync(src, dest)
console.log('✓ mitmproxy.js copied to out/main/')
}
}
}
}

export default defineConfig({
main: {
build: {
outDir: 'out/main',
rollupOptions: {
external: [
'electron',
'@starknt/sysproxy',
'@starknt/sysproxy-linux-arm64-gnu',
'@starknt/shutdown-handler-napi',
'@starknt/shutdown-handler-napi-linux-arm64-gnu',
],
},
},
plugins: [
externalizeDepsPlugin(),
copyMitmproxyPlugin()
],
resolve: {
alias: {
'@': resolve(__dirname, 'src/main'),
},
},
define: {
'global.GENTLY': true,
},
},
preload: {
build: {
outDir: 'out/preload',
lib: {
entry: resolve(__dirname, 'src/preload/index.js'),
formats: ['cjs'],
fileName: () => 'index.js',
},
rollupOptions: {
external: ['electron'],
},
},
plugins: [externalizeDepsPlugin()],
},
renderer: {
root: resolve(__dirname, 'src/renderer'),
base: './',
publicDir: resolve(__dirname, 'public'),
build: {
outDir: resolve(__dirname, 'out/renderer'),
rollupOptions: {
input: {
index: resolve(__dirname, 'src/renderer/index.html'),
},
output: {
manualChunks(id) {
if (id.includes('node_modules')) {
if (id.includes('vue') || id.includes('vue-router') || id.includes('ant-design-vue')) {
return 'vendor'
}
}
},
},
},
},
plugins: [
vue(),
vueJsx(),
],
resolve: {
alias: {
'@': resolve(__dirname, 'src/renderer/src')
},
},
css: {
preprocessorOptions: {
scss: {},
},
},
define: {
'global.GENTLY': true,
},
server: {
port: 8080,
open: false,
},
},
})
Loading
Loading