node-power-user 0.0.22 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +194 -15
- package/package.json +6 -4
- package/src/index.js +194 -15
package/dist/index.js
CHANGED
|
@@ -13,6 +13,12 @@ const { spawn, exec } = require('child_process');
|
|
|
13
13
|
const argv = require('yargs').argv;
|
|
14
14
|
const JSON5 = require('json5');
|
|
15
15
|
const { isEqual } = require('lodash');
|
|
16
|
+
const semverIsEqual = require('semver/functions/eq')
|
|
17
|
+
const semverCoerce = require('semver/functions/coerce')
|
|
18
|
+
const table = require('table').table;
|
|
19
|
+
const Npm = require('npm-api');
|
|
20
|
+
const os = require('os');
|
|
21
|
+
|
|
16
22
|
// const npm = require('npm');
|
|
17
23
|
|
|
18
24
|
function Main() {
|
|
@@ -99,45 +105,183 @@ const self = this;
|
|
|
99
105
|
}
|
|
100
106
|
|
|
101
107
|
if (self.options.out || self.options.outdated || self.options.match || self.options['-o'] || self.options['--outdated'] || self.options['--match']) {
|
|
102
|
-
self.log(chalk.blue.bold(`
|
|
108
|
+
// self.log(chalk.blue.bold(`Outdated:`));
|
|
109
|
+
// self.log(chalk.green(`name: package = installed`));
|
|
110
|
+
|
|
111
|
+
const data = [
|
|
112
|
+
['Package', 'package.json', 'Intalled', 'Latest'],
|
|
113
|
+
];
|
|
114
|
+
|
|
115
|
+
const config = {
|
|
116
|
+
columnDefault: {
|
|
117
|
+
width: 10,
|
|
118
|
+
},
|
|
119
|
+
header: {
|
|
120
|
+
alignment: 'center',
|
|
121
|
+
content: 'Outdated and mismatched packages',
|
|
122
|
+
},
|
|
123
|
+
}
|
|
103
124
|
|
|
104
125
|
const response = {};
|
|
105
|
-
|
|
106
|
-
const
|
|
126
|
+
|
|
127
|
+
const depKeys = Object.keys(self.proj_packageJSON.dependencies || {});
|
|
128
|
+
|
|
129
|
+
let bumpCommand = '';
|
|
107
130
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const packageVersion =
|
|
111
|
-
const installedVersion =
|
|
112
|
-
(
|
|
113
|
-
|
|
114
|
-
|
|
131
|
+
for (var i = 0; i < depKeys.length; i++) {
|
|
132
|
+
const dep = depKeys[i];
|
|
133
|
+
const packageVersion = _coerce(self.proj_packageJSON.dependencies[dep]);
|
|
134
|
+
const installedVersion = _coerce(
|
|
135
|
+
_getVersion(
|
|
136
|
+
(await asyncCommand(`npm list ${dep} --depth=0 | grep ${dep}`))
|
|
137
|
+
.split(' ')[1]
|
|
138
|
+
)
|
|
115
139
|
);
|
|
116
|
-
const
|
|
117
|
-
const
|
|
140
|
+
const latestVersion = await getLatestVersion(dep);
|
|
141
|
+
const isEqual = _isEqual(installedVersion, packageVersion);
|
|
142
|
+
const isLatest = _isEqual(packageVersion, latestVersion);
|
|
143
|
+
const verbLocal = isEqual ? 'green' : 'yellow';
|
|
144
|
+
const verbRemote = isLatest ? 'green' : 'red';
|
|
145
|
+
|
|
146
|
+
if (!isEqual) {
|
|
147
|
+
bumpCommand += `npm i ${dep}@${installedVersion} && `
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// function _color(array) {
|
|
151
|
+
// array.forEach((item, i) => {
|
|
152
|
+
// array[i] = chalk[verb](item);
|
|
153
|
+
// });
|
|
154
|
+
// return array;
|
|
155
|
+
// }
|
|
156
|
+
// data.push(_color([ dep, packageVersion, installedVersion, latestVersion]))
|
|
157
|
+
|
|
158
|
+
// function _color(s) {
|
|
159
|
+
// return chalk[verb](s);
|
|
160
|
+
// }
|
|
161
|
+
|
|
162
|
+
data.push([
|
|
163
|
+
dep,
|
|
164
|
+
packageVersion,
|
|
165
|
+
chalk[verbLocal](installedVersion),
|
|
166
|
+
chalk[verbRemote](latestVersion),
|
|
167
|
+
])
|
|
118
168
|
|
|
119
169
|
response[dep] = {
|
|
120
170
|
isEqual: isEqual,
|
|
171
|
+
isLatest: isLatest,
|
|
121
172
|
package: packageVersion,
|
|
122
173
|
installed: installedVersion,
|
|
174
|
+
latest: latestVersion,
|
|
123
175
|
}
|
|
124
176
|
|
|
125
|
-
self.log(chalk[verb](`${dep}: ${packageVersion} = ${installedVersion}`));
|
|
126
|
-
}
|
|
177
|
+
// self.log(chalk[verb](`${dep}: ${packageVersion} = ${installedVersion}`));
|
|
178
|
+
};
|
|
127
179
|
|
|
128
180
|
// self.log(chalk.blue.bold(`\nDev Dependencies:`));
|
|
129
181
|
// Object.keys(self.proj_packageJSON.devDependencies || {})
|
|
130
182
|
// .forEach((dep, i) => {
|
|
131
183
|
// self.log(chalk.blue(`${dep} @ ${self.proj_packageJSON.devDependencies[dep]}`));
|
|
132
|
-
// });
|
|
184
|
+
// });
|
|
185
|
+
|
|
186
|
+
console.log(table(data, config));
|
|
187
|
+
|
|
188
|
+
if (bumpCommand) {
|
|
189
|
+
bumpCommand = bumpCommand.replace(/&&\s$/ig, '')
|
|
190
|
+
inquirer.prompt([
|
|
191
|
+
{
|
|
192
|
+
type: 'confirm',
|
|
193
|
+
name: 'bump',
|
|
194
|
+
message: 'Would you like to bump the package.json versions?',
|
|
195
|
+
default: true,
|
|
196
|
+
}
|
|
197
|
+
])
|
|
198
|
+
.then(async (answer) => {
|
|
199
|
+
if (answer.bump) {
|
|
200
|
+
asyncCommand(bumpCommand);
|
|
201
|
+
} else {
|
|
202
|
+
}
|
|
203
|
+
})
|
|
204
|
+
}
|
|
133
205
|
|
|
134
206
|
return response;
|
|
135
207
|
}
|
|
136
208
|
|
|
209
|
+
if (self.options.global || self.options['-g'] || self.options['--global']) {
|
|
210
|
+
const parentPath = `/Users/${os.userInfo().username}/.nvm/versions/node`;
|
|
211
|
+
const versions = jetpack.list(parentPath);
|
|
212
|
+
const currentNode = process.versions.node;
|
|
213
|
+
|
|
214
|
+
const response = {};
|
|
215
|
+
|
|
216
|
+
// console.log(chalk.bold.blue('NVM Global Modules'));
|
|
217
|
+
|
|
218
|
+
for (var i = 0; i < versions.length; i++) {
|
|
219
|
+
try {
|
|
220
|
+
const parsed = semverCoerce(versions[i]);
|
|
221
|
+
const lib = path.resolve(parentPath, `v${parsed.version}`, 'lib', 'node_modules');
|
|
222
|
+
|
|
223
|
+
const modules = jetpack.list(lib);
|
|
224
|
+
|
|
225
|
+
const data = [
|
|
226
|
+
['Package', 'package.json', 'latest'],
|
|
227
|
+
];
|
|
228
|
+
|
|
229
|
+
const config = {
|
|
230
|
+
columnDefault: {
|
|
231
|
+
width: 10,
|
|
232
|
+
},
|
|
233
|
+
header: {
|
|
234
|
+
alignment: 'center',
|
|
235
|
+
content: `Global packages for v${parsed.version}`,
|
|
236
|
+
},
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
response[parsed.version] = {};
|
|
240
|
+
|
|
241
|
+
for (var j = 0; j < modules.length; j++) {
|
|
242
|
+
const mod = modules[j];
|
|
243
|
+
const packagePath = path.resolve(lib, mod, 'package.json');
|
|
244
|
+
try {
|
|
245
|
+
const package = require(packagePath);
|
|
246
|
+
|
|
247
|
+
const packageVersion = package.version;
|
|
248
|
+
const latestVersion = await getLatestVersion(mod);
|
|
249
|
+
// const isEqual = _isEqual(installedVersion, packageVersion);
|
|
250
|
+
const isLatest = _isEqual(packageVersion, latestVersion);
|
|
251
|
+
// const verbLocal = isEqual ? 'green' : 'yellow';
|
|
252
|
+
const verbRemote = isLatest ? 'green' : 'red';
|
|
253
|
+
|
|
254
|
+
data.push([
|
|
255
|
+
mod,
|
|
256
|
+
packageVersion,
|
|
257
|
+
chalk[verbRemote](latestVersion),
|
|
258
|
+
]);
|
|
259
|
+
|
|
260
|
+
response[parsed.version][mod] = {
|
|
261
|
+
packageVersion: packageVersion,
|
|
262
|
+
latestVersion: latestVersion,
|
|
263
|
+
}
|
|
264
|
+
} catch (e) {
|
|
265
|
+
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
console.log(table(data, config));
|
|
270
|
+
|
|
271
|
+
} catch (e) {
|
|
272
|
+
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return response;
|
|
277
|
+
}
|
|
278
|
+
|
|
137
279
|
if (self.options.clean) {
|
|
138
280
|
const NPM_INSTALL_FLAG = self.options['--no-optional'] || self.options['-no-optional'] || self.options['no-optional'] ? '--no-optional' : ''
|
|
139
281
|
const NPM_CLEAN = `rm -fr node_modules && rm -fr package-lock.json && npm cache clean --force && npm install ${NPM_INSTALL_FLAG} && npm rb`;
|
|
282
|
+
|
|
140
283
|
self.log(chalk.blue(`Running: ${NPM_CLEAN}...`));
|
|
284
|
+
|
|
141
285
|
return await asyncCommand(NPM_CLEAN)
|
|
142
286
|
.then(r => {
|
|
143
287
|
self.log(chalk.green(`Finished cleaning`));
|
|
@@ -210,3 +354,38 @@ async function asyncCommand(command) {
|
|
|
210
354
|
});
|
|
211
355
|
});
|
|
212
356
|
}
|
|
357
|
+
|
|
358
|
+
function _coerce(v) {
|
|
359
|
+
try {
|
|
360
|
+
return semverCoerce(v)
|
|
361
|
+
} catch (e) {
|
|
362
|
+
return '0.0.0'
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
function _isEqual(v1, v2) {
|
|
367
|
+
try {
|
|
368
|
+
return semverIsEqual(v1, v2)
|
|
369
|
+
} catch (e) {
|
|
370
|
+
return false;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
function _getVersion(v) {
|
|
375
|
+
v = v.split('@');
|
|
376
|
+
return v[v.length - 1]
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
function getLatestVersion(package) {
|
|
380
|
+
return new Promise(function(resolve, reject) {
|
|
381
|
+
const npm = new Npm();
|
|
382
|
+
|
|
383
|
+
npm.repo(package)
|
|
384
|
+
.package()
|
|
385
|
+
.then(function(pkg) {
|
|
386
|
+
resolve(pkg.version);
|
|
387
|
+
}, function(err) {
|
|
388
|
+
resolve('?');
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-power-user",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25",
|
|
4
4
|
"description": "Easy tools for every Node.js developer!",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"scripts": {
|
|
12
12
|
"test": "npm run prepare && ./node_modules/mocha/bin/mocha test/ --recursive --timeout=10000",
|
|
13
13
|
"start": "npm run prepare && node -e 'new (require(`./dist/index.js`))().process()'",
|
|
14
|
-
"prepare": "node -e 'require(`prepare-package`)'"
|
|
14
|
+
"prepare": "node -e 'require(`prepare-package`)()'"
|
|
15
15
|
},
|
|
16
16
|
"repository": {
|
|
17
17
|
"type": "git",
|
|
@@ -35,7 +35,9 @@
|
|
|
35
35
|
"json5": "^2.2.1",
|
|
36
36
|
"keychain": "^1.3.0",
|
|
37
37
|
"lodash": "^4.17.21",
|
|
38
|
+
"npm-api": "^1.0.1",
|
|
38
39
|
"semver": "^7.3.7",
|
|
40
|
+
"table": "^6.8.0",
|
|
39
41
|
"yargs": "^16.2.0"
|
|
40
42
|
},
|
|
41
43
|
"files": [
|
|
@@ -44,6 +46,6 @@
|
|
|
44
46
|
],
|
|
45
47
|
"devDependencies": {
|
|
46
48
|
"mocha": "^8.4.0",
|
|
47
|
-
"prepare-package": "^0.0.
|
|
49
|
+
"prepare-package": "^0.0.16"
|
|
48
50
|
}
|
|
49
|
-
}
|
|
51
|
+
}
|
package/src/index.js
CHANGED
|
@@ -13,6 +13,12 @@ const { spawn, exec } = require('child_process');
|
|
|
13
13
|
const argv = require('yargs').argv;
|
|
14
14
|
const JSON5 = require('json5');
|
|
15
15
|
const { isEqual } = require('lodash');
|
|
16
|
+
const semverIsEqual = require('semver/functions/eq')
|
|
17
|
+
const semverCoerce = require('semver/functions/coerce')
|
|
18
|
+
const table = require('table').table;
|
|
19
|
+
const Npm = require('npm-api');
|
|
20
|
+
const os = require('os');
|
|
21
|
+
|
|
16
22
|
// const npm = require('npm');
|
|
17
23
|
|
|
18
24
|
function Main() {
|
|
@@ -99,45 +105,183 @@ const self = this;
|
|
|
99
105
|
}
|
|
100
106
|
|
|
101
107
|
if (self.options.out || self.options.outdated || self.options.match || self.options['-o'] || self.options['--outdated'] || self.options['--match']) {
|
|
102
|
-
self.log(chalk.blue.bold(`
|
|
108
|
+
// self.log(chalk.blue.bold(`Outdated:`));
|
|
109
|
+
// self.log(chalk.green(`name: package = installed`));
|
|
110
|
+
|
|
111
|
+
const data = [
|
|
112
|
+
['Package', 'package.json', 'Intalled', 'Latest'],
|
|
113
|
+
];
|
|
114
|
+
|
|
115
|
+
const config = {
|
|
116
|
+
columnDefault: {
|
|
117
|
+
width: 10,
|
|
118
|
+
},
|
|
119
|
+
header: {
|
|
120
|
+
alignment: 'center',
|
|
121
|
+
content: 'Outdated and mismatched packages',
|
|
122
|
+
},
|
|
123
|
+
}
|
|
103
124
|
|
|
104
125
|
const response = {};
|
|
105
|
-
|
|
106
|
-
const
|
|
126
|
+
|
|
127
|
+
const depKeys = Object.keys(self.proj_packageJSON.dependencies || {});
|
|
128
|
+
|
|
129
|
+
let bumpCommand = '';
|
|
107
130
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const packageVersion =
|
|
111
|
-
const installedVersion =
|
|
112
|
-
(
|
|
113
|
-
|
|
114
|
-
|
|
131
|
+
for (var i = 0; i < depKeys.length; i++) {
|
|
132
|
+
const dep = depKeys[i];
|
|
133
|
+
const packageVersion = _coerce(self.proj_packageJSON.dependencies[dep]);
|
|
134
|
+
const installedVersion = _coerce(
|
|
135
|
+
_getVersion(
|
|
136
|
+
(await asyncCommand(`npm list ${dep} --depth=0 | grep ${dep}`))
|
|
137
|
+
.split(' ')[1]
|
|
138
|
+
)
|
|
115
139
|
);
|
|
116
|
-
const
|
|
117
|
-
const
|
|
140
|
+
const latestVersion = await getLatestVersion(dep);
|
|
141
|
+
const isEqual = _isEqual(installedVersion, packageVersion);
|
|
142
|
+
const isLatest = _isEqual(packageVersion, latestVersion);
|
|
143
|
+
const verbLocal = isEqual ? 'green' : 'yellow';
|
|
144
|
+
const verbRemote = isLatest ? 'green' : 'red';
|
|
145
|
+
|
|
146
|
+
if (!isEqual) {
|
|
147
|
+
bumpCommand += `npm i ${dep}@${installedVersion} && `
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// function _color(array) {
|
|
151
|
+
// array.forEach((item, i) => {
|
|
152
|
+
// array[i] = chalk[verb](item);
|
|
153
|
+
// });
|
|
154
|
+
// return array;
|
|
155
|
+
// }
|
|
156
|
+
// data.push(_color([ dep, packageVersion, installedVersion, latestVersion]))
|
|
157
|
+
|
|
158
|
+
// function _color(s) {
|
|
159
|
+
// return chalk[verb](s);
|
|
160
|
+
// }
|
|
161
|
+
|
|
162
|
+
data.push([
|
|
163
|
+
dep,
|
|
164
|
+
packageVersion,
|
|
165
|
+
chalk[verbLocal](installedVersion),
|
|
166
|
+
chalk[verbRemote](latestVersion),
|
|
167
|
+
])
|
|
118
168
|
|
|
119
169
|
response[dep] = {
|
|
120
170
|
isEqual: isEqual,
|
|
171
|
+
isLatest: isLatest,
|
|
121
172
|
package: packageVersion,
|
|
122
173
|
installed: installedVersion,
|
|
174
|
+
latest: latestVersion,
|
|
123
175
|
}
|
|
124
176
|
|
|
125
|
-
self.log(chalk[verb](`${dep}: ${packageVersion} = ${installedVersion}`));
|
|
126
|
-
}
|
|
177
|
+
// self.log(chalk[verb](`${dep}: ${packageVersion} = ${installedVersion}`));
|
|
178
|
+
};
|
|
127
179
|
|
|
128
180
|
// self.log(chalk.blue.bold(`\nDev Dependencies:`));
|
|
129
181
|
// Object.keys(self.proj_packageJSON.devDependencies || {})
|
|
130
182
|
// .forEach((dep, i) => {
|
|
131
183
|
// self.log(chalk.blue(`${dep} @ ${self.proj_packageJSON.devDependencies[dep]}`));
|
|
132
|
-
// });
|
|
184
|
+
// });
|
|
185
|
+
|
|
186
|
+
console.log(table(data, config));
|
|
187
|
+
|
|
188
|
+
if (bumpCommand) {
|
|
189
|
+
bumpCommand = bumpCommand.replace(/&&\s$/ig, '')
|
|
190
|
+
inquirer.prompt([
|
|
191
|
+
{
|
|
192
|
+
type: 'confirm',
|
|
193
|
+
name: 'bump',
|
|
194
|
+
message: 'Would you like to bump the package.json versions?',
|
|
195
|
+
default: true,
|
|
196
|
+
}
|
|
197
|
+
])
|
|
198
|
+
.then(async (answer) => {
|
|
199
|
+
if (answer.bump) {
|
|
200
|
+
asyncCommand(bumpCommand);
|
|
201
|
+
} else {
|
|
202
|
+
}
|
|
203
|
+
})
|
|
204
|
+
}
|
|
133
205
|
|
|
134
206
|
return response;
|
|
135
207
|
}
|
|
136
208
|
|
|
209
|
+
if (self.options.global || self.options['-g'] || self.options['--global']) {
|
|
210
|
+
const parentPath = `/Users/${os.userInfo().username}/.nvm/versions/node`;
|
|
211
|
+
const versions = jetpack.list(parentPath);
|
|
212
|
+
const currentNode = process.versions.node;
|
|
213
|
+
|
|
214
|
+
const response = {};
|
|
215
|
+
|
|
216
|
+
// console.log(chalk.bold.blue('NVM Global Modules'));
|
|
217
|
+
|
|
218
|
+
for (var i = 0; i < versions.length; i++) {
|
|
219
|
+
try {
|
|
220
|
+
const parsed = semverCoerce(versions[i]);
|
|
221
|
+
const lib = path.resolve(parentPath, `v${parsed.version}`, 'lib', 'node_modules');
|
|
222
|
+
|
|
223
|
+
const modules = jetpack.list(lib);
|
|
224
|
+
|
|
225
|
+
const data = [
|
|
226
|
+
['Package', 'package.json', 'latest'],
|
|
227
|
+
];
|
|
228
|
+
|
|
229
|
+
const config = {
|
|
230
|
+
columnDefault: {
|
|
231
|
+
width: 10,
|
|
232
|
+
},
|
|
233
|
+
header: {
|
|
234
|
+
alignment: 'center',
|
|
235
|
+
content: `Global packages for v${parsed.version}`,
|
|
236
|
+
},
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
response[parsed.version] = {};
|
|
240
|
+
|
|
241
|
+
for (var j = 0; j < modules.length; j++) {
|
|
242
|
+
const mod = modules[j];
|
|
243
|
+
const packagePath = path.resolve(lib, mod, 'package.json');
|
|
244
|
+
try {
|
|
245
|
+
const package = require(packagePath);
|
|
246
|
+
|
|
247
|
+
const packageVersion = package.version;
|
|
248
|
+
const latestVersion = await getLatestVersion(mod);
|
|
249
|
+
// const isEqual = _isEqual(installedVersion, packageVersion);
|
|
250
|
+
const isLatest = _isEqual(packageVersion, latestVersion);
|
|
251
|
+
// const verbLocal = isEqual ? 'green' : 'yellow';
|
|
252
|
+
const verbRemote = isLatest ? 'green' : 'red';
|
|
253
|
+
|
|
254
|
+
data.push([
|
|
255
|
+
mod,
|
|
256
|
+
packageVersion,
|
|
257
|
+
chalk[verbRemote](latestVersion),
|
|
258
|
+
]);
|
|
259
|
+
|
|
260
|
+
response[parsed.version][mod] = {
|
|
261
|
+
packageVersion: packageVersion,
|
|
262
|
+
latestVersion: latestVersion,
|
|
263
|
+
}
|
|
264
|
+
} catch (e) {
|
|
265
|
+
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
console.log(table(data, config));
|
|
270
|
+
|
|
271
|
+
} catch (e) {
|
|
272
|
+
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return response;
|
|
277
|
+
}
|
|
278
|
+
|
|
137
279
|
if (self.options.clean) {
|
|
138
280
|
const NPM_INSTALL_FLAG = self.options['--no-optional'] || self.options['-no-optional'] || self.options['no-optional'] ? '--no-optional' : ''
|
|
139
281
|
const NPM_CLEAN = `rm -fr node_modules && rm -fr package-lock.json && npm cache clean --force && npm install ${NPM_INSTALL_FLAG} && npm rb`;
|
|
282
|
+
|
|
140
283
|
self.log(chalk.blue(`Running: ${NPM_CLEAN}...`));
|
|
284
|
+
|
|
141
285
|
return await asyncCommand(NPM_CLEAN)
|
|
142
286
|
.then(r => {
|
|
143
287
|
self.log(chalk.green(`Finished cleaning`));
|
|
@@ -210,3 +354,38 @@ async function asyncCommand(command) {
|
|
|
210
354
|
});
|
|
211
355
|
});
|
|
212
356
|
}
|
|
357
|
+
|
|
358
|
+
function _coerce(v) {
|
|
359
|
+
try {
|
|
360
|
+
return semverCoerce(v)
|
|
361
|
+
} catch (e) {
|
|
362
|
+
return '0.0.0'
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
function _isEqual(v1, v2) {
|
|
367
|
+
try {
|
|
368
|
+
return semverIsEqual(v1, v2)
|
|
369
|
+
} catch (e) {
|
|
370
|
+
return false;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
function _getVersion(v) {
|
|
375
|
+
v = v.split('@');
|
|
376
|
+
return v[v.length - 1]
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
function getLatestVersion(package) {
|
|
380
|
+
return new Promise(function(resolve, reject) {
|
|
381
|
+
const npm = new Npm();
|
|
382
|
+
|
|
383
|
+
npm.repo(package)
|
|
384
|
+
.package()
|
|
385
|
+
.then(function(pkg) {
|
|
386
|
+
resolve(pkg.version);
|
|
387
|
+
}, function(err) {
|
|
388
|
+
resolve('?');
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
}
|