| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/usr/bin/env node
- import fs from 'fs';
- import os from 'os';
- import path from 'path';
- import { fileURLToPath } from 'url';
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
- const projectRoot = path.resolve(__dirname, '..');
- const outputDir = path.join(projectRoot, '.electron-build', 'ms-playwright');
- function findBrowserCache() {
- const envPath = process.env.PLAYWRIGHT_BROWSERS_PATH;
- if (envPath && envPath !== '0' && fs.existsSync(envPath)) return envPath;
- const candidates = [
- path.join(os.homedir(), 'Library', 'Caches', 'ms-playwright'),
- path.join(os.homedir(), '.cache', 'ms-playwright'),
- path.join(process.env.LOCALAPPDATA || '', 'ms-playwright'),
- ].filter(Boolean);
- return candidates.find((candidate) => fs.existsSync(candidate)) || '';
- }
- function copyDirectoryContents(sourceDir, targetDir) {
- const entries = fs.readdirSync(sourceDir, { withFileTypes: true });
- for (const entry of entries) {
- const sourcePath = path.join(sourceDir, entry.name);
- const targetPath = path.join(targetDir, entry.name);
- if (entry.isDirectory()) {
- fs.cpSync(sourcePath, targetPath, { recursive: true, force: true });
- } else if (entry.isFile()) {
- fs.copyFileSync(sourcePath, targetPath);
- }
- }
- }
- fs.rmSync(outputDir, { recursive: true, force: true });
- fs.mkdirSync(outputDir, { recursive: true });
- const browserCache = findBrowserCache();
- if (!browserCache) {
- console.log('[prepare-electron-browsers] No Playwright browser cache found. Packaging will continue without bundled browsers.');
- process.exit(0);
- }
- copyDirectoryContents(browserCache, outputDir);
- console.log(`[prepare-electron-browsers] Copied browsers from ${browserCache} -> ${outputDir}`);
|