package.json
{
"name": "emc2",
"private": true,
"version": "0.2.23",
"license": "MIT",
"webDeployment": { "protocol": 1, "profile": 1 },
"type": "module",
"scripts": {
"dev": "node scripts/dev-desktop.mjs",
"build": "tsc --noEmit && vite build && node scripts/build-browser.mjs && node scripts/build-desktop.mjs",
"start": "node scripts/launch-desktop.mjs",
"test": "tsx --test --test-concurrency=1 --test-timeout=120000 server/*.test.ts desktop/*.test.ts src/*.test.tsx scripts/*.test.mjs",
"dev:web": "concurrently -k \"node --watch-path=server --watch-path=shared --import tsx server/index.ts\" \"vite --host 127.0.0.1\"",
"start:web": "node --import tsx scripts/start-browser.mjs",
"phone:link": "node scripts/phone-setup.mjs",
"package": "npm run build && electron-builder --win nsis --x64 --publish never",
"package:dir": "npm run build && electron-builder --win --x64 --dir",
"package:mac": "npm run build && electron-builder --mac dmg zip --publish never",
"package:mac:dir": "npm run build && electron-builder --mac --dir --publish never",
"check:desktop": "node scripts/launch-desktop.mjs --check-startup",
"release": "node scripts/release.mjs",
"cli": "node scripts/emc2.mjs",
"build:web": "tsc --noEmit && vite build && node scripts/build-browser.mjs"
},
"dependencies": {
"@fontsource-variable/inter": "5.3.0",
"@modelcontextprotocol/sdk": "^1.32.1",
"@napi-rs/keyring": "2.1.2",
"@simplewebauthn/browser": "14.0.0",
"@simplewebauthn/server": "14.0.3",
"electron-updater": "6.8.11",
"express": "^5.3.0",
"googleapis": "^160.0.0",
"htmlparser2": "12.0.0",
"imapflow": "^1.0.0",
"jsonc-parser": "^3.3.1",
"mailparser": "^3.12.4",
"nodemailer": "^10.2.1",
"pdfjs-dist": "6.4.299",
"qrcode": "1.5.4",
"react": "^19.3.1",
"react-dom": "^19.3.1",
"undici": "7.30.1",
"zod": "^4.6.7"
},
"devDependencies": {
"@types/express": "^5.0.0",
"@types/jsdom": "^30.0.0",
"@types/mailparser": "^3.4.0",
"@types/node": "^24.0.0",
"@types/nodemailer": "^7.0.0",
"@types/qrcode": "1.5.6",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^5.0.0",
"concurrently": "^10.0.6",
"electron": "^44.9.2",
"electron-builder": "^26.18.0",
"esbuild": "^0.28.2",
"happy-dom": "21.0.4",
"jsdom": "^30.1.3",
"tsx": "^4.20.0",
"typescript": "^5.9.0",
"vite": "^7.0.0"
},
"main": ".desktop/main.cjs",
"description": "A keyboard-driven desktop inbox for all your email accounts.",
"author": "Screen",
"build": {
"appId": "dev.screen.aggregate-mail",
"productName": "Emc\u00b2",
"directories": {
"output": "release"
},
"files": [
".desktop/**",
"dist/**",
"package.json",
"build/icon.png",
"build/tray-icon.png",
"!**/{.env,.env.*,*.env,*.env.*,*.key,*.pem,*.p12,*.pfx,*.mobileprovision,*.sqlite,*.sqlite-*,*.db,*.db-*,key.protected}",
"!**/{.data,.handoff,.ssh,.aws}/**"
],
"asar": true,
"afterPack": "scripts/sign-mac.cjs",
"mac": {
"category": "public.app-category.productivity",
"target": [
"dmg",
"zip"
],
"icon": "build/icon.icns",
"identity": null,
"notarize": false,
"artifactName": "Emc2-${version}-mac-${arch}.${ext}"
},
"dmg": {
"sign": false
},
"win": {
"target": [
"nsis"
],
"icon": "build/icon.ico",
"signAndEditExecutable": true
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true,
"createDesktopShortcut": true,
"createStartMenuShortcut": true,
"artifactName": "Emc2-${version}-win-${arch}.${ext}"
},
"linux": {
"target": [
"AppImage"
],
"artifactName": "Emc2-${version}-linux-${arch}.${ext}"
},
"publish": {
"provider": "github",
"owner": "collection-of-things",
"repo": "aggregate-mail"
}
},
"bin": {
"emc2": "scripts/emc2.mjs"
},
"engines": {
"node": ">=24.22.1 <25"
}
}