convert electron.cjs into ts

This commit is contained in:
neil 2023-02-06 12:41:22 +08:00
parent 621262627c
commit 91c4ee9606
8 changed files with 75 additions and 26 deletions

View file

@ -13,4 +13,5 @@ package-lock.json
yarn.lock
coverage/*
build/*
dist/*
dist/*
electron/dist/*

View file

@ -24,5 +24,8 @@ module.exports = {
browser: true,
es2017: true,
node: true
},
rules: {
'@typescript-eslint/ban-ts-comment': ['error', { 'ts-ignore': 'allow-with-description' }]
}
};

View file

@ -7,4 +7,5 @@ node_modules
.env.*
!.env.example
coverage/*
dist/*
dist/*
electron/dist/*

View file

@ -15,4 +15,5 @@ build
coverage/*
**/*.plist
build/*
dist/*
dist/*
electron/dist/*

View file

@ -7,7 +7,7 @@ module.exports = {
productName: 'tea',
asar: false,
directories: { output: 'dist' },
files: ['electron/electron.cjs', { from: 'build', to: '' }]
files: ['electron/dist/electron.cjs', { from: 'build', to: '' }]
// TODO: if xcrun altool exists eventually in our self-hosted macos
// SOLUTION: is notarize separately in next pipeline step
// afterSign: async (params) => {

View file

@ -1,12 +1,15 @@
const windowStateManager = require('electron-window-state');
const { app, BrowserWindow, ipcMain } = require('electron');
const contextMenu = require('electron-context-menu');
const serve = require('electron-serve');
const path = require('path');
const fs = require('fs');
import windowStateManager from 'electron-window-state';
import { app, BrowserWindow, ipcMain } from 'electron';
import contextMenu from 'electron-context-menu';
import serve from 'electron-serve';
import path from 'path';
import fs from 'fs';
try {
require('electron-reloader')(module);
//@ts-ignore only used in dev should not be packaged inprod
/* eslint-disable */
const er = require('electron-reloader');
er(module);
} catch (e) {
console.error(e);
}
@ -14,10 +17,10 @@ try {
const serveURL = serve({ directory: '.' });
const port = process.env.PORT || 3000;
const dev = !app.isPackaged;
let mainWindow;
let mainWindow: BrowserWindow | null;
function createWindow() {
let windowState = windowStateManager({
const windowState = windowStateManager({
defaultWidth: 800,
defaultHeight: 600
});
@ -32,7 +35,7 @@ function createWindow() {
minHeight: 450,
minWidth: 500,
webPreferences: {
enableRemoteModule: true,
// enableRemoteModule: true,
contextIsolation: false,
nodeIntegration: true,
spellcheck: false,
@ -72,7 +75,7 @@ contextMenu({
});
function loadVite(port) {
mainWindow.loadURL(`http://localhost:${port}`).catch((e) => {
mainWindow?.loadURL(`http://localhost:${port}`).catch((e) => {
console.log('Error loading URL, retrying', e);
setTimeout(() => {
loadVite(port);
@ -101,7 +104,7 @@ app.on('window-all-closed', () => {
});
ipcMain.on('to-main', (event, count) => {
return mainWindow.webContents.send('from-main', `next count is ${count + 1}`);
return mainWindow?.webContents.send('from-main', `next count is ${count + 1}`);
});
ipcMain.handle('get-installed-packages', async () => {
@ -114,10 +117,10 @@ ipcMain.handle('get-installed-packages', async () => {
const deepReadDir = async (dirPath) => {
let arrayOfFiles;
try {
arrayOfFiles = fs.readdirSync(dirPath)
console.log(arrayOfFiles)
} catch(e) {
console.log(e)
arrayOfFiles = fs.readdirSync(dirPath);
console.log(arrayOfFiles);
} catch (e) {
console.log(e);
}
// await Promise.all(
// (await readdir(dirPath, {withFileTypes: true})).map(async (dirent) => {
@ -126,4 +129,4 @@ const deepReadDir = async (dirPath) => {
// }),
// )
return arrayOfFiles;
}
};

View file

@ -0,0 +1,38 @@
import { join } from 'path';
const PACKAGE_ROOT = __dirname;
const PROJECT_ROOT = join(PACKAGE_ROOT, '../..');
/**
* @type {import('vite').UserConfig}
* @see https://vitejs.dev/config/
*/
const config = {
root: PACKAGE_ROOT,
envDir: PROJECT_ROOT,
resolve: {
alias: {
'/@/': join(PACKAGE_ROOT, 'src') + '/'
}
},
build: {
ssr: true,
sourcemap: 'inline',
outDir: 'dist',
assetsDir: '.',
minify: process.env.MODE !== 'development',
lib: {
entry: 'electron.ts',
formats: ['cjs']
},
rollupOptions: {
output: {
entryFileNames: '[name].cjs'
}
},
emptyOutDir: true,
reportCompressedSize: false
}
};
export default config;

View file

@ -4,19 +4,21 @@
"private": true,
"description": "tea gui app",
"author": "tea.xyz",
"main": "electron/electron.cjs",
"main": "electron/dist/electron.cjs",
"scripts": {
"dev": "cross-env NODE_ENV=dev npm run dev:all",
"dev:all": "concurrently -n=svelte,electron -c='#ff3e00',blue \"npm run dev:svelte\" \"npm run dev:electron\"",
"dev:all": "concurrently -n=svelte,electron -c='#ff3e00',blue \"pnpm dev:main\" \"pnpm dev:svelte\" \"pnpm dev:electron\"",
"dev:svelte": "vite dev",
"dev:electron": "electron electron/electron.cjs",
"dev:electron": "electron electron/dist/electron.cjs",
"dev:main": "cd ./electron && vite build --watch",
"build:main": "cd ./electron && vite build",
"pack": "electron-builder --dir --config electron-builder.config.cjs",
"dist": "pnpm build && electron-builder --config electron-builder.config.cjs",
"package": "pnpm build && electron-builder --config electron-builder.config.cjs",
"dev:package": "pnpm build && electron-builder --config electron-builder.config.cjs --dir",
"electron": "concurrently --kill-others \"vite dev\" \"electron electron/electron.cjs\"",
"electron": "concurrently --kill-others \"vite dev\" \"electron electron/dist/electron.cjs\"",
"olddev": "vite dev",
"build": "vite build && cp build/app.html build/index.html",
"build": "pnpm build:main && vite build && cp build/app.html build/index.html",
"preview": "vite preview",
"unit:test": "vitest",
"coverage": "vitest run --coverage",