mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-12-15 00:33:06 +03:00
3839a9bd15
Due to restrictions on how Electron package works, the `node_modules` should not be hoisted and not to use s/h-links at all. This is why we need to have two separate installs for electron and non-electron packages in the build. Tested via the following script ```bash #!/bin/bash echo "step 1: clean up" find . -name "node_modules" -prune -exec rm -rf '{}' + # git clean -dfX build_type=canary echo "step 2: install web dependencies" # firstly, build web static PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 SENTRYCLI_SKIP_DOWNLOAD=1 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 HUSKY=1 yarn echo "step 3: generate assets" BUILD_TYPE="$build_type" yarn workspace @affine/electron generate-assets # cleanup node_modules find . -name "node_modules" -prune -exec rm -rf '{}' + echo "step 4: install electron dependencies" # install electron deps yarn config set nmHoistingLimits workspaces yarn config set enableScripts false yarn config set nmMode classic PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 HUSKY=0 yarn workspaces focus @affine/electron @affine/monorepo echo "step 5: build native" # build native yarn workspace @affine/native build yarn workspace @affine/storage build echo "step 6: build electron" # build electron yarn workspace @affine/electron build echo "step 7: package electron" # package SKIP_GENERATE_ASSETS=1 BUILD_TYPE="$build_type" HOIST_NODE_MODULES=1 yarn workspace @affine/electron package ```
16 lines
391 B
TypeScript
16 lines
391 B
TypeScript
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const outputRoot = fileURLToPath(
|
|
new URL(
|
|
'../out/canary/AFFiNE-canary-darwin-arm64/AFFiNE-canary.app/Contents/Resources',
|
|
import.meta.url
|
|
)
|
|
);
|
|
|
|
// todo: use asar package to check contents
|
|
fs.existsSync(path.resolve(outputRoot, 'app.asar'));
|
|
|
|
console.log('Output check passed');
|