|
1 | | -import path from 'path'; |
2 | | -import fs from 'fs'; |
3 | | -import {exec} from 'child_process'; |
4 | | -import {Meteor} from 'meteor/meteor'; |
| 1 | +import path from 'path' |
| 2 | +import fs from 'fs' |
| 3 | +import {exec} from 'child_process' |
| 4 | +import {Meteor} from 'meteor/meteor' |
5 | 5 |
|
| 6 | +CWD = path.resolve('./') |
6 | 7 |
|
7 | | -CWD = path.resolve('./'); |
8 | | - |
9 | | -checkNpmDeps = function checkNpmDeps({dependencies, devDependencies}) { |
10 | | - let pkg = {}; |
11 | | - const packageFile = path.join(CWD, 'package.json'); |
| 8 | +checkNpmDeps = function checkNpmDeps ({dependencies, devDependencies}) { |
| 9 | + let pkg = {} |
| 10 | + const packageFile = path.join(CWD, 'package.json') |
12 | 11 |
|
13 | 12 | if (fs.existsSync(packageFile)) { |
14 | | - pkg = JSON.parse(fs.readFileSync(packageFile).toString()); |
| 13 | + pkg = JSON.parse(fs.readFileSync(packageFile).toString()) |
15 | 14 | } |
16 | 15 |
|
17 | 16 | if (!pkg.dependencies) { |
18 | | - pkg.dependencies = {}; |
| 17 | + pkg.dependencies = {} |
19 | 18 | } |
20 | 19 |
|
21 | 20 | if (!pkg.devDependencies) { |
22 | | - pkg.devDependencies = {}; |
| 21 | + pkg.devDependencies = {} |
23 | 22 | } |
24 | 23 |
|
25 | | - let hasChanged = false; |
| 24 | + let hasChanged = false |
26 | 25 |
|
27 | | - if(dependencies) { |
| 26 | + if (dependencies) { |
28 | 27 | for (let depName in dependencies) { |
29 | 28 | if (isNpmPackageOlder(dependencies[depName], pkg.dependencies[depName])) { |
30 | | - pkg.dependencies[depName] = dependencies[depName]; |
31 | | - hasChanged = true; |
| 29 | + pkg.dependencies[depName] = dependencies[depName] |
| 30 | + hasChanged = true |
32 | 31 | } |
33 | 32 | } |
34 | 33 | } |
35 | 34 |
|
36 | | - if(devDependencies) { |
| 35 | + if (devDependencies) { |
37 | 36 | for (let depName in devDependencies) { |
38 | 37 | if (isNpmPackageOlder(devDependencies[depName], pkg.devDependencies[depName])) { |
39 | | - pkg.devDependencies[depName] = devDependencies[depName]; |
40 | | - hasChanged = true; |
| 38 | + pkg.devDependencies[depName] = devDependencies[depName] |
| 39 | + hasChanged = true |
41 | 40 | } |
42 | 41 | } |
43 | 42 | } |
44 | 43 |
|
45 | 44 | if (hasChanged) { |
46 | | - fs.writeFileSync(packageFile, JSON.stringify(pkg, null, 2)); |
| 45 | + fs.writeFileSync(packageFile, JSON.stringify(pkg, null, 2)) |
47 | 46 | } |
48 | 47 |
|
49 | | - return hasChanged; |
| 48 | + return hasChanged |
50 | 49 | } |
51 | 50 |
|
52 | 51 | isNpmPackageOlder = function (depVersion, currentVersion) { |
53 | 52 | if (!currentVersion) { |
54 | | - return true; |
| 53 | + return true |
55 | 54 | } |
56 | 55 |
|
57 | | - const depVersions = depVersion.replace(/^[\^~]/, '').split('.'); |
58 | | - const currentVersions = currentVersion.replace(/^[\^~]/, '').split('.'); |
| 56 | + const depVersions = depVersion.replace(/^[\^~]/, '').split('.') |
| 57 | + const currentVersions = currentVersion.replace(/^[\^~]/, '').split('.') |
59 | 58 |
|
60 | 59 | for (let i = depVersions.length; i < 3; ++i) { |
61 | | - depVersions.push('0'); |
| 60 | + depVersions.push('0') |
62 | 61 | } |
63 | 62 |
|
64 | 63 | for (let i = currentVersions.length; i < 3; ++i) { |
65 | | - depVersions.push('0'); |
| 64 | + depVersions.push('0') |
66 | 65 | } |
67 | 66 |
|
68 | 67 | if (depVersions[0] > currentVersions[0]) { |
69 | | - return true; |
| 68 | + return true |
70 | 69 | } else if (depVersions[0] < currentVersions[0]) { |
71 | | - return false; |
| 70 | + return false |
72 | 71 | } |
73 | 72 |
|
74 | 73 | if (depVersions[1] > currentVersions[1]) { |
75 | | - return true; |
| 74 | + return true |
76 | 75 | } else if (depVersions[1] < currentVersions[1]) { |
77 | | - return false; |
| 76 | + return false |
78 | 77 | } |
79 | 78 |
|
80 | 79 | if (depVersions[2] > currentVersions[2]) { |
81 | | - return true; |
| 80 | + return true |
82 | 81 | } else if (depVersions[2] < currentVersions[2]) { |
83 | | - return false; |
| 82 | + return false |
84 | 83 | } |
85 | 84 |
|
86 | | - return false; |
| 85 | + return false |
87 | 86 | } |
88 | 87 |
|
89 | 88 | execSync = Meteor.wrapAsync((...params) => { |
90 | | - const cb = params.pop(); |
91 | | - exec(...params, (error, stdout, stderr) => { |
92 | | - stdout && console.log(stdout.toString()); |
93 | | - stderr && console.error(stderr.toString()); |
94 | | - cb(error); |
95 | | - }); |
96 | | -}); |
| 89 | + const cb = params.pop() |
| 90 | + exec(...params, (error, stdout, stderr) => { |
| 91 | + stdout && console.log(stdout.toString()) |
| 92 | + stderr && console.error(stderr.toString()) |
| 93 | + cb(error) |
| 94 | + }) |
| 95 | +}) |
0 commit comments