2024-10-11 06:58:54 +00:00
|
|
|
const { writeFile } = require('fs/promises');
|
|
|
|
|
const { execSync } = require('child_process');
|
2022-03-08 16:49:08 +00:00
|
|
|
const electron = require('electron');
|
|
|
|
|
const path = require('path');
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns versions of electron vendors
|
|
|
|
|
* The performance of this feature is very poor and can be improved
|
|
|
|
|
* @see https://github.com/electron/electron/issues/28006
|
|
|
|
|
*
|
|
|
|
|
* @returns {NodeJS.ProcessVersions}
|
|
|
|
|
*/
|
|
|
|
|
function getVendors() {
|
|
|
|
|
const output = execSync(`${electron} -p "JSON.stringify(process.versions)"`, {
|
2024-10-11 06:58:54 +00:00
|
|
|
env: { ELECTRON_RUN_AS_NODE: '1' },
|
2022-03-08 16:49:08 +00:00
|
|
|
encoding: 'utf-8',
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return JSON.parse(output);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function updateVendors() {
|
|
|
|
|
const electronRelease = getVendors();
|
|
|
|
|
|
|
|
|
|
const nodeMajorVersion = electronRelease.node.split('.')[0];
|
|
|
|
|
const chromeMajorVersion = electronRelease.v8.split('.')[0] + electronRelease.v8.split('.')[1];
|
|
|
|
|
|
|
|
|
|
const browserslistrcPath = path.resolve(process.cwd(), '.browserslistrc');
|
|
|
|
|
|
|
|
|
|
return Promise.all([
|
2024-10-11 06:58:54 +00:00
|
|
|
writeFile(
|
|
|
|
|
'./.electron-vendors.cache.json',
|
|
|
|
|
JSON.stringify(
|
|
|
|
|
{
|
|
|
|
|
chrome: chromeMajorVersion,
|
|
|
|
|
node: nodeMajorVersion,
|
|
|
|
|
},
|
|
|
|
|
null,
|
|
|
|
|
2,
|
|
|
|
|
) + '\n',
|
2022-03-08 16:49:08 +00:00
|
|
|
),
|
|
|
|
|
|
|
|
|
|
writeFile(browserslistrcPath, `Chrome ${chromeMajorVersion}\n`, 'utf8'),
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
updateVendors().catch(err => {
|
|
|
|
|
console.error(err);
|
|
|
|
|
process.exit(1);
|
|
|
|
|
});
|