Skip to content

Commit c13478c

Browse files
committed
Refactor force-lowest-dependencies.js to use ESM
1 parent 4ed6ab6 commit c13478c

File tree

1 file changed

+48
-72
lines changed

1 file changed

+48
-72
lines changed

scripts/force-lowest-dependencies.js

Lines changed: 48 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,22 @@
77
* file that was distributed with this source code.
88
*/
99

10-
'use strict';
11-
12-
const fs = require('fs');
13-
const childProcess = require('child_process');
10+
import fs from 'fs/promises';
11+
import childProcess from 'child_process';
1412

1513
const vueLowVersion = '2.5.0';
1614
const vueLoaderLowVersion = '15.0.11';
1715

1816
/**
1917
* @param {string} dependency
2018
* @param {string} range
21-
* @return {Promise}
19+
* @return {Promise<[string, string]>}
2220
*/
2321
function getLowestVersion(dependency, range) {
2422
return new Promise((resolve, reject) => {
2523
if (range.startsWith('file:')) {
2624
resolve([dependency, range]);
25+
return;
2726
}
2827

2928
childProcess.exec(
@@ -67,79 +66,56 @@ function getLowestVersion(dependency, range) {
6766
});
6867
}
6968

70-
fs.readFile('package.json', (error, data) => {
71-
if (error) {
72-
throw error;
73-
}
74-
75-
const packageInfo = JSON.parse(data);
69+
const data = await fs.readFile('package.json', 'utf-8');
70+
const packageInfo = JSON.parse(data);
7671

77-
const dependencyPromises = [];
78-
if (packageInfo.dependencies) {
79-
for (const dependency in packageInfo.dependencies) {
80-
dependencyPromises.push(getLowestVersion(
81-
dependency,
82-
packageInfo.dependencies[dependency]
83-
));
84-
}
72+
const dependencyPromises = [];
73+
if (packageInfo.dependencies) {
74+
for (const dependency in packageInfo.dependencies) {
75+
dependencyPromises.push(getLowestVersion(
76+
dependency,
77+
packageInfo.dependencies[dependency]
78+
));
8579
}
80+
}
8681

87-
const devDependencyPromises = [];
88-
if (packageInfo.devDependencies) {
89-
for (const devDependency in packageInfo.devDependencies) {
90-
devDependencyPromises.push(getLowestVersion(
91-
devDependency,
92-
packageInfo.devDependencies[devDependency]
93-
));
94-
}
82+
const devDependencyPromises = [];
83+
if (packageInfo.devDependencies) {
84+
for (const devDependency in packageInfo.devDependencies) {
85+
devDependencyPromises.push(getLowestVersion(
86+
devDependency,
87+
packageInfo.devDependencies[devDependency]
88+
));
9589
}
90+
}
9691

97-
const dependenciesUpdate = Promise.all(dependencyPromises).then(versions => {
98-
versions.forEach(version => {
99-
packageInfo.dependencies[version[0]] = version[1];
100-
});
101-
});
92+
const [dependencyVersions, devDependencyVersions] = await Promise.all([
93+
Promise.all(dependencyPromises),
94+
Promise.all(devDependencyPromises),
95+
]);
10296

103-
const devDependenciesUpdate = Promise.all(devDependencyPromises).then(versions => {
104-
versions.forEach(version => {
105-
packageInfo.devDependencies[version[0]] = version[1];
106-
});
107-
});
97+
for (const [name, version] of dependencyVersions) {
98+
packageInfo.dependencies[name] = version;
99+
}
108100

109-
// Once all the lowest versions have been resolved, update the
110-
// package.json file accordingly.
111-
Promise
112-
.all([dependenciesUpdate, devDependenciesUpdate])
113-
.then(() => new Promise((resolve, reject) => {
114-
fs.writeFile('package.json', JSON.stringify(packageInfo, null, 2), (error) => {
115-
if (error) {
116-
reject(error);
117-
return;
118-
}
101+
for (const [name, version] of devDependencyVersions) {
102+
packageInfo.devDependencies[name] = version;
103+
}
119104

120-
resolve();
121-
});
122-
}))
123-
.then(() => {
124-
console.log('Manually forcing Vue to version 2');
125-
packageInfo.devDependencies.vue = vueLowVersion;
126-
packageInfo.devDependencies['vue-loader'] = vueLoaderLowVersion;
127-
})
128-
.then(() => {
129-
console.log('Updated package.json file with lowest dependency versions: ');
130-
131-
console.log('Dependencies:');
132-
for (const dependency in packageInfo.dependencies) {
133-
console.log(` - ${dependency}: ${packageInfo.dependencies[dependency]}`);
134-
}
105+
await fs.writeFile('package.json', JSON.stringify(packageInfo, null, 2));
135106

136-
console.log('Dev dependencies:');
137-
for (const dependency in packageInfo.devDependencies) {
138-
console.log(` - ${dependency}: ${packageInfo.devDependencies[dependency]}`);
139-
}
140-
})
141-
.catch(error => {
142-
console.error(error);
143-
process.exit(1); // eslint-disable-line
144-
});
145-
});
107+
console.log('Manually forcing Vue to version 2');
108+
packageInfo.devDependencies.vue = vueLowVersion;
109+
packageInfo.devDependencies['vue-loader'] = vueLoaderLowVersion;
110+
111+
console.log('Updated package.json file with lowest dependency versions: ');
112+
113+
console.log('Dependencies:');
114+
for (const dependency in packageInfo.dependencies) {
115+
console.log(` - ${dependency}: ${packageInfo.dependencies[dependency]}`);
116+
}
117+
118+
console.log('Dev dependencies:');
119+
for (const dependency in packageInfo.devDependencies) {
120+
console.log(` - ${dependency}: ${packageInfo.devDependencies[dependency]}`);
121+
}

0 commit comments

Comments
 (0)