StarRailCopilot/webapp/scripts/update-electron-vendors.js
2023-09-10 00:22:01 +08:00

61 lines
1.6 KiB
JavaScript

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)"`, {
env: {ELECTRON_RUN_AS_NODE: '1'},
encoding: 'utf-8',
});
return JSON.parse(output);
}
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([
writeFile(
'./electron-vendors.config.json',
formattedJSON({
chrome: chromeMajorVersion,
node: nodeMajorVersion,
}),
),
readFile(packageJSONPath)
.then(JSON.parse)
.then(packageJSON => {
if (!packageJSON || !Array.isArray(packageJSON.browserslist)) {
throw new Error(`Can't find browserslist in ${packageJSONPath}`);
}
packageJSON.browserslist = [`Chrome ${chromeMajorVersion}`];
return writeFile(packageJSONPath, formattedJSON(packageJSON));
}),
]);
}
updateVendors().catch(err => {
console.error(err);
process.exit(1);
});