mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-04-27 01:16:23 +02:00
add win32 + linux electron builds
This commit is contained in:
parent
dbdfcffa8d
commit
e1637d5965
6 changed files with 354 additions and 43 deletions
|
|
@ -22,7 +22,7 @@ await esbuild.build({
|
|||
platform: 'node',
|
||||
target: 'node20',
|
||||
outfile: './.package/dist/main.cjs',
|
||||
external: ['electron'], // Provided by Electron runtime
|
||||
external: ['electron', 'electron-squirrel-startup'], // Provided by Electron runtime
|
||||
// Use CommonJS format - many dependencies use require() which doesn't work
|
||||
// well with esbuild's ESM shim. CJS handles dynamic requires natively.
|
||||
format: 'cjs',
|
||||
|
|
|
|||
|
|
@ -19,9 +19,6 @@ module.exports = {
|
|||
appleIdPassword: process.env.APPLE_PASSWORD,
|
||||
teamId: process.env.APPLE_TEAM_ID
|
||||
},
|
||||
// NOTE: Electron Forge ignores packagerConfig.dir and always packages from the
|
||||
// config file's directory. We use packageAfterCopy hook instead to customize output.
|
||||
// dir: path.join(__dirname, '.package'), // Not supported by Forge
|
||||
// Since we bundle everything with esbuild, we don't need node_modules at all.
|
||||
// These settings prevent Forge's dependency walker (flora-colossus) from trying
|
||||
// to analyze/copy node_modules, which fails with pnpm's symlinked workspaces.
|
||||
|
|
@ -43,23 +40,27 @@ module.exports = {
|
|||
})
|
||||
},
|
||||
{
|
||||
name: '@electron-forge/maker-zip',
|
||||
platforms: ['darwin'],
|
||||
// ZIP is used by Squirrel.Mac for auto-updates
|
||||
name: '@electron-forge/maker-squirrel',
|
||||
config: (arch) => ({
|
||||
// Path must match S3 publisher's folder structure: releases/darwin/{arch}
|
||||
macUpdateManifestBaseUrl: `https://rowboat-desktop-app-releases.s3.amazonaws.com/releases/darwin/${arch}`
|
||||
authors: 'Rowboat',
|
||||
description: 'AI coworker with memory',
|
||||
name: `Rowboat-win32-${arch}`,
|
||||
})
|
||||
},
|
||||
{
|
||||
name: '@electron-forge/maker-zip',
|
||||
platform: ["darwin", "win32", "linux"],
|
||||
}
|
||||
],
|
||||
publishers: [
|
||||
{
|
||||
name: '@electron-forge/publisher-s3',
|
||||
name: '@electron-forge/publisher-github',
|
||||
config: {
|
||||
bucket: 'rowboat-desktop-app-releases',
|
||||
region: 'us-east-1',
|
||||
public: true,
|
||||
folder: 'releases' // Creates structure: releases/darwin/{arch}/files (separate builds for arm64 and x64)
|
||||
repository: {
|
||||
owner: 'rowboatlabs',
|
||||
name: 'rowboat'
|
||||
},
|
||||
prerelease: true
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -6,9 +6,8 @@
|
|||
"scripts": {
|
||||
"start": "electron .",
|
||||
"build": "rm -rf dist && tsc && node bundle.mjs",
|
||||
"package": "electron-forge package --arch=arm64,x64 --platform=darwin",
|
||||
"make": "electron-forge make --arch=arm64,x64 --platform=darwin",
|
||||
"publish": "electron-forge publish --arch=arm64,x64 --platform=darwin"
|
||||
"package": "electron-forge package",
|
||||
"make": "electron-forge make"
|
||||
},
|
||||
"dependencies": {
|
||||
"@x/core": "workspace:*",
|
||||
|
|
@ -18,14 +17,15 @@
|
|||
"zod": "^4.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^25.0.3",
|
||||
"electron": "^39.2.7",
|
||||
"esbuild": "^0.24.2",
|
||||
"@electron-forge/cli": "^7.10.2",
|
||||
"@electron-forge/maker-deb": "^7.10.2",
|
||||
"@electron-forge/maker-dmg": "^7.10.2",
|
||||
"@electron-forge/maker-squirrel": "^7.10.2",
|
||||
"@electron-forge/maker-zip": "^7.10.2",
|
||||
"@electron-forge/publisher-s3": "^7.10.2"
|
||||
"@electron-forge/publisher-github": "^7.11.1",
|
||||
"@electron-forge/publisher-s3": "^7.10.2",
|
||||
"@types/node": "^25.0.3",
|
||||
"electron": "^39.2.7",
|
||||
"esbuild": "^0.24.2"
|
||||
}
|
||||
}
|
||||
|
|
@ -16,6 +16,9 @@ import { initConfigs } from "@x/core/dist/config/initConfigs.js";
|
|||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
// run this as early in the main process as possible
|
||||
if (require('electron-squirrel-startup')) app.quit();
|
||||
|
||||
// Path resolution differs between development and production:
|
||||
const preloadPath = app.isPackaged
|
||||
? path.join(__dirname, "../preload/dist/preload.js")
|
||||
|
|
@ -115,8 +118,8 @@ app.whenReady().then(async () => {
|
|||
if (app.isPackaged) {
|
||||
updateElectronApp({
|
||||
updateSource: {
|
||||
type: UpdateSourceType.StaticStorage,
|
||||
baseUrl: `https://rowboat-desktop-app-releases.s3.amazonaws.com/releases/${process.platform}/${process.arch}`,
|
||||
type: UpdateSourceType.ElectronPublicUpdateService,
|
||||
repo: "rowboatlabs/rowboat",
|
||||
},
|
||||
notifyUser: true, // Shows native dialog when update is available
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue