mirror of
https://github.com/microsoft/vscode-extension-samples.git
synced 2026-04-27 16:55:44 +08:00
chore: bump @vscode/test-electron, add update script (#858)
This commit is contained in:
52
.scripts/update-dependency.js
Normal file
52
.scripts/update-dependency.js
Normal file
@ -0,0 +1,52 @@
|
||||
// @ts-check
|
||||
/**
|
||||
* Update a dependency to a version in all relevant samples
|
||||
*/
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const child_process = require('child_process');
|
||||
const { samples } = require('./samples');
|
||||
|
||||
function setVersion(
|
||||
/** @type {string} */ dependencyName,
|
||||
/** @type {string} */ version,
|
||||
/** @type {import('./samples').Sample} */ sample
|
||||
) {
|
||||
const packageJsonPath = path.join(sample.path, 'package.json');
|
||||
const packageJsonContents = fs.readFileSync(packageJsonPath).toString();
|
||||
const packageJson = JSON.parse(packageJsonContents);
|
||||
|
||||
let changed = false;
|
||||
if (packageJson.dependencies?.[dependencyName]) {
|
||||
packageJson.dependencies[dependencyName] = version;
|
||||
changed = true;
|
||||
}
|
||||
if (packageJson.devDependencies?.[dependencyName]) {
|
||||
packageJson.devDependencies[dependencyName] = version;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
if (!changed) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`Updated ${dependencyName} in ${packageJson.name}`);
|
||||
const space = packageJsonContents.includes('\t') ? '\t' : ' ';
|
||||
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, undefined, space) + '\n');
|
||||
|
||||
if (fs.existsSync(path.join(sample.path, 'package-lock.json'))) {
|
||||
console.log(` npm install in ${packageJson.name}`);
|
||||
child_process.execSync(`npm install`, {
|
||||
cwd: sample.path,
|
||||
stdio: 'inherit'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const [, , dependency, version] = process.argv;
|
||||
if (!dependency || !version) {
|
||||
console.log(`Usage: ${process.argv[0]} ${process.argv[1]} <depndency> <version>`);
|
||||
}
|
||||
for (const sample of samples) {
|
||||
setVersion(dependency, version, sample);
|
||||
}
|
||||
Reference in New Issue
Block a user