- Added support for inferring team lead names from configuration, improving message attribution in task communications. - Introduced new dependencies for CodeMirror language support, enhancing the editing experience for various programming languages. - Implemented scoped item IDs in the CLI logs view to prevent cross-group collisions, improving UI clarity. - Enhanced sorting logic in the team list view to prioritize alive teams and match current project paths. - Added lazy-check functionality for task changes in Kanban cards, optimizing performance and user experience. - Updated diff view components to support new language features and improve overall editing capabilities.
103 lines
2.8 KiB
TypeScript
103 lines
2.8 KiB
TypeScript
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
|
|
import react from '@vitejs/plugin-react'
|
|
import { readFileSync } from 'fs'
|
|
import { resolve } from 'path'
|
|
import type { Plugin } from 'vite'
|
|
|
|
// Read all production dependencies from package.json
|
|
// so they get bundled into the main process output.
|
|
// This avoids pnpm symlink issues with electron-builder's asar packaging.
|
|
const pkg = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf-8'))
|
|
const prodDeps = Object.keys(pkg.dependencies || {})
|
|
|
|
// Rollup plugin: stub out native .node addon imports with empty modules.
|
|
// ssh2 and cpu-features use optional native bindings that can't be bundled,
|
|
// but they have pure JS fallbacks when the native module isn't available.
|
|
function nativeModuleStub(): Plugin {
|
|
const STUB_ID = '\0native-stub'
|
|
return {
|
|
name: 'native-module-stub',
|
|
resolveId(source) {
|
|
if (source.endsWith('.node')) return STUB_ID
|
|
return null
|
|
},
|
|
load(id) {
|
|
if (id === STUB_ID) return 'export default {}'
|
|
return null
|
|
}
|
|
}
|
|
}
|
|
|
|
export default defineConfig({
|
|
main: {
|
|
plugins: [
|
|
externalizeDepsPlugin({
|
|
exclude: prodDeps
|
|
}),
|
|
nativeModuleStub()
|
|
],
|
|
resolve: {
|
|
alias: {
|
|
'@main': resolve(__dirname, 'src/main'),
|
|
'@shared': resolve(__dirname, 'src/shared'),
|
|
'@preload': resolve(__dirname, 'src/preload')
|
|
}
|
|
},
|
|
build: {
|
|
outDir: 'dist-electron/main',
|
|
rollupOptions: {
|
|
input: {
|
|
index: resolve(__dirname, 'src/main/index.ts')
|
|
},
|
|
output: {
|
|
// CJS format so bundled deps can use __dirname/require.
|
|
// Use .cjs extension since package.json has "type": "module".
|
|
format: 'cjs',
|
|
entryFileNames: '[name].cjs'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
preload: {
|
|
plugins: [externalizeDepsPlugin()],
|
|
resolve: {
|
|
alias: {
|
|
'@preload': resolve(__dirname, 'src/preload'),
|
|
'@shared': resolve(__dirname, 'src/shared'),
|
|
'@main': resolve(__dirname, 'src/main')
|
|
}
|
|
},
|
|
build: {
|
|
outDir: 'dist-electron/preload',
|
|
rollupOptions: {
|
|
input: {
|
|
index: resolve(__dirname, 'src/preload/index.ts')
|
|
},
|
|
output: {
|
|
format: 'cjs',
|
|
entryFileNames: '[name].js'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
renderer: {
|
|
optimizeDeps: {
|
|
include: ['@codemirror/language-data']
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@renderer': resolve(__dirname, 'src/renderer'),
|
|
'@shared': resolve(__dirname, 'src/shared'),
|
|
'@main': resolve(__dirname, 'src/main')
|
|
}
|
|
},
|
|
plugins: [react()],
|
|
build: {
|
|
rollupOptions: {
|
|
input: {
|
|
index: resolve(__dirname, 'src/renderer/index.html')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|