aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/update-electron-vendors.js
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-22 19:17:07 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-22 19:37:20 +0100
commit929171dcba75b51be464e12906801c875ab7647a (patch)
treeae59d77dd1a8dda3ec8118f8f810a783c9103655 /scripts/update-electron-vendors.js
downloadsophie-929171dcba75b51be464e12906801c875ab7647a.tar.gz
sophie-929171dcba75b51be464e12906801c875ab7647a.tar.zst
sophie-929171dcba75b51be464e12906801c875ab7647a.zip
Initial commit
Project skeleton based on https://github.com/cawa-93/vite-electron-builder but we use react instead of vue and yarn instead of npm.
Diffstat (limited to 'scripts/update-electron-vendors.js')
-rw-r--r--scripts/update-electron-vendors.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/scripts/update-electron-vendors.js b/scripts/update-electron-vendors.js
new file mode 100644
index 0000000..650d394
--- /dev/null
+++ b/scripts/update-electron-vendors.js
@@ -0,0 +1,55 @@
1#!/usr/bin/env node
2
3// @ts-check
4
5const { execSync } = require('child_process');
6const electronPath = require('electron');
7const { writeFile } = require('fs/promises');
8const path = require('path');
9
10/**
11 * Returns versions of electron vendors
12 * The performance of this feature is very poor and can be improved
13 * @see https://github.com/electron/electron/issues/28006
14 *
15 * @returns {NodeJS.ProcessVersions}
16 */
17function getVendors() {
18 const output = execSync(`${electronPath} -p "JSON.stringify(process.versions)"`, {
19 env: {'ELECTRON_RUN_AS_NODE': '1'},
20 encoding: 'utf-8',
21 });
22
23 return JSON.parse(output);
24}
25
26/**
27 * Generates the `.browserlistrc` and `.electron-vendors.cache.json` files.
28 *
29 * @returns Promise<void>
30 */
31function updateVendors() {
32 const electronRelease = getVendors();
33
34 const nodeMajorVersion = electronRelease.node.split('.')[0];
35 const chromeMajorVersion = electronRelease.v8.split('.')[0] + electronRelease.v8.split('.')[1];
36
37 const browserslistrcPath = path.resolve(process.cwd(), '.browserslistrc');
38
39 return Promise.all([
40 writeFile(
41 './.electron-vendors.cache.json',
42 JSON.stringify({
43 chrome: chromeMajorVersion,
44 node: nodeMajorVersion,
45 }, null, 2) + '\n',
46 ),
47
48 writeFile(browserslistrcPath, `Chrome ${chromeMajorVersion}\n`, 'utf8'),
49 ]);
50}
51
52updateVendors().catch((err) => {
53 console.error(err);
54 process.exit(1);
55});