1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-03-12 00:28:20 +08:00
Files
AzurLaneAutoScript/webapp/scripts/update-electron-vendors.js

59 lines
1.6 KiB
JavaScript
Raw Normal View History

2024-06-05 23:20:28 +08:00
const {writeFile, readFile} = require('fs/promises');
const {execSync} = require('child_process');
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)"`, {
2025-09-03 13:59:51 +08:00
env: {'ELECTRON_RUN_AS_NODE': '1'},
2024-06-05 23:20:28 +08:00
encoding: 'utf-8',
});
return JSON.parse(output);
}
2025-09-03 13:59:51 +08:00
2024-06-05 23:20:28 +08:00
function formattedJSON(obj) {
return JSON.stringify(obj, null, 2) + '\n';
}
function updateVendors() {
const electronRelease = getVendors();
const nodeMajorVersion = electronRelease.node.split('.')[0];
const chromeMajorVersion = electronRelease.v8.split('.')[0] + electronRelease.v8.split('.')[1];
const packageJSONPath = path.resolve(process.cwd(), 'package.json');
return Promise.all([
2025-09-03 13:59:51 +08:00
writeFile('./electron-vendors.config.json',
2024-06-05 23:20:28 +08:00
formattedJSON({
chrome: chromeMajorVersion,
node: nodeMajorVersion,
}),
),
2025-09-03 13:59:51 +08:00
readFile(packageJSONPath).then(JSON.parse).then((packageJSON) => {
if (!packageJSON || !Array.isArray(packageJSON.browserslist)) {
throw new Error(`Can't find browserslist in ${packageJSONPath}`);
}
2024-06-05 23:20:28 +08:00
2025-09-03 13:59:51 +08:00
packageJSON.browserslist = [`Chrome ${chromeMajorVersion}`];
2024-06-05 23:20:28 +08:00
2025-09-03 13:59:51 +08:00
return writeFile(packageJSONPath, formattedJSON(packageJSON));
}),
2024-06-05 23:20:28 +08:00
]);
}
updateVendors().catch(err => {
console.error(err);
process.exit(1);
});