|
7 | 7 | * file that was distributed with this source code. |
8 | 8 | */ |
9 | 9 |
|
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'; |
14 | 12 |
|
15 | 13 | const vueLowVersion = '2.5.0'; |
16 | 14 | const vueLoaderLowVersion = '15.0.11'; |
17 | 15 |
|
18 | 16 | /** |
19 | 17 | * @param {string} dependency |
20 | 18 | * @param {string} range |
21 | | - * @return {Promise} |
| 19 | + * @return {Promise<[string, string]>} |
22 | 20 | */ |
23 | 21 | function getLowestVersion(dependency, range) { |
24 | 22 | return new Promise((resolve, reject) => { |
25 | 23 | if (range.startsWith('file:')) { |
26 | 24 | resolve([dependency, range]); |
| 25 | + return; |
27 | 26 | } |
28 | 27 |
|
29 | 28 | childProcess.exec( |
@@ -67,79 +66,56 @@ function getLowestVersion(dependency, range) { |
67 | 66 | }); |
68 | 67 | } |
69 | 68 |
|
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); |
76 | 71 |
|
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 | + )); |
85 | 79 | } |
| 80 | +} |
86 | 81 |
|
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 | + )); |
95 | 89 | } |
| 90 | +} |
96 | 91 |
|
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 | +]); |
102 | 96 |
|
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 | +} |
108 | 100 |
|
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 | +} |
119 | 104 |
|
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)); |
135 | 106 |
|
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