Files
FreeCrawl-SEO-Tool/apps/desktop/electron-builder.yml
T

101 lines
3.8 KiB
YAML

appId: com.kemalai.freecrawl
productName: FreeCrawl SEO Tool
electronVersion: 41.2.2
publish:
provider: github
owner: kemalai
repo: FreeCrawl-SEO-Tool
releaseType: release
directories:
buildResources: resources
output: release
files:
- out/**/*
- package.json
- "!**/*.map"
- "!**/*.ts"
# The language detector loads only `eld/large`; the other three n-gram
# databases are ~4.5 MB of dead weight in the installer. ELD is a module
# singleton — one database per process — so the rest can never be reached.
- "!node_modules/eld/src/ngrams/{extrasmall,small,medium}.js"
asar: true
# Release file names carry the platform and, where it matters, the CPU as
# plain words (Windows-Setup / Windows-Portable / macOS-Apple-Silicon /
# macOS-Intel / Linux-x86_64) so the Releases page needs no decoding.
# Hyphens, not spaces: GitHub rewrites spaces in asset URLs. The macOS
# name below is the local fallback (`-macOS-arm64` / `-macOS-x64`); the
# release workflow overrides it per architecture with the friendly words
# via `-c.mac.artifactName`, since one template cannot branch on arch.
# `pickInstallerAsset()` in src/main/index.ts matches both spellings.
asarUnpack:
- "**/*.node"
# V2 Faz 1 — JS rendering. By default the Playwright browser cache is
# NOT bundled into the installer (saves ~250 MB). The main process
# prompts the user to download the browser on first JS-render crawl.
#
# To opt into bundling (offline installer / enterprise distribution):
# 1. Run `npm run playwright:install` so the cache exists locally.
# 2. Build with `BUNDLE_PLAYWRIGHT=1`:
# $env:BUNDLE_PLAYWRIGHT='1'; npm --workspace apps/desktop run build:win
# The build script copies `~/AppData/Local/ms-playwright` into
# `apps/desktop/resources/playwright-browsers/` BEFORE
# electron-builder runs, and the `extraResources` glob below picks
# it up. When the env var is unset the resources folder is empty
# and the glob no-ops.
extraResources:
- from: "resources/playwright-browsers"
to: "playwright-browsers"
filter:
- "**/*"
win:
target:
- target: nsis
arch:
- x64
- target: portable
arch:
- x64
nsis:
artifactName: FreeCrawl-SEO-Tool-${version}-Windows-Setup.${ext}
oneClick: false
allowToChangeInstallationDirectory: true
createDesktopShortcut: true
createStartMenuShortcut: true
portable:
artifactName: FreeCrawl-SEO-Tool-${version}-Windows-Portable.${ext}
mac:
artifactName: FreeCrawl-SEO-Tool-${version}-macOS-${arch}.${ext}
# No `arch` list here on purpose. electron-builder lets a config-side
# arch list override the CLI's `--arm64` / `--x64` unless a target type
# is also given on the CLI (computeArchToTargetNamesMap), so with
# `arch: [arm64, x64]` every release leg built BOTH images — and once
# both carried the same friendly name they overwrote each other. The
# arch now comes from the CLI: the release workflow passes one per leg,
# a local `npm run build:mac` builds the host arch, and
# `npm run build:mac -- --arm64 --x64` builds both.
target:
- dmg
category: public.app-category.developer-tools
# Linux AppImage only: wraps the binary in a launcher that adds --no-sandbox
# on kernels that deny unprivileged user namespaces (Ubuntu 23.10+ AppArmor),
# where Chromium would otherwise abort before the app starts. The hook is a
# no-op for every other platform and target; see the file for the reasoning.
afterPack: scripts/after-pack.mjs
linux:
executableName: freecrawl-seo
artifactName: FreeCrawl-SEO-Tool-${version}-Linux-${arch}.${ext}
target:
- AppImage
- deb
- rpm
category: Development
rpm:
fpm:
- "--name"
- "freecrawl-seo"
fileAssociations:
- ext: seoproject
name: FreeCrawl SEO Project
description: FreeCrawl SEO crawl project
role: Editor