1 | #!/usr/bin/env node
|
2 | "use strict";
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | var __importStar = (this && this.__importStar) || function (mod) {
|
8 | if (mod && mod.__esModule) return mod;
|
9 | var result = {};
|
10 | if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
11 | result["default"] = mod;
|
12 | return result;
|
13 | };
|
14 | Object.defineProperty(exports, "__esModule", { value: true });
|
15 | const path = __importStar(require("path"));
|
16 | const utils = __importStar(require("./utils"));
|
17 | const packageJson = require("package-json");
|
18 | let allDeps = [];
|
19 | let allDevDeps = [];
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 | async function getDependency(name) {
|
28 | let version = '';
|
29 | let versions = {};
|
30 | allDeps = [];
|
31 | allDevDeps = [];
|
32 | utils.getLernaPaths().forEach(pkgRoot => {
|
33 |
|
34 | let packagePath = path.join(pkgRoot, 'package.json');
|
35 | let data;
|
36 | try {
|
37 | data = utils.readJSONFile(packagePath);
|
38 | }
|
39 | catch (e) {
|
40 | return;
|
41 | }
|
42 | if (data.name === name) {
|
43 | version = '^' + data.version;
|
44 | return;
|
45 | }
|
46 | let deps = data.dependencies || {};
|
47 | let devDeps = data.devDependencies || {};
|
48 | if (deps[name]) {
|
49 | allDeps.push(data.name);
|
50 | if (deps[name] in versions) {
|
51 | versions[deps[name]]++;
|
52 | }
|
53 | else {
|
54 | versions[deps[name]] = 1;
|
55 | }
|
56 | }
|
57 | if (devDeps[name]) {
|
58 | allDevDeps.push(data.name);
|
59 | if (devDeps[name] in versions) {
|
60 | versions[devDeps[name]]++;
|
61 | }
|
62 | else {
|
63 | versions[devDeps[name]] = 1;
|
64 | }
|
65 | }
|
66 | });
|
67 | if (version) {
|
68 | return version;
|
69 | }
|
70 | if (Object.keys(versions).length > 0) {
|
71 |
|
72 | version = Object.keys(versions).reduce((a, b) => {
|
73 | return versions[a] > versions[b] ? a : b;
|
74 | });
|
75 | }
|
76 | else {
|
77 | const releaseData = await packageJson(name);
|
78 | version = '~' + releaseData.version;
|
79 | }
|
80 | return Promise.resolve(version);
|
81 | }
|
82 | exports.getDependency = getDependency;
|
83 | if (require.main === module) {
|
84 |
|
85 | if (process.argv.length < 3) {
|
86 | let msg = '** Must supply a target library name\n';
|
87 | process.stderr.write(msg);
|
88 | process.exit(1);
|
89 | }
|
90 | let name = process.argv[2];
|
91 | void getDependency(name).then(version => {
|
92 | console.log('dependency of: ', allDeps);
|
93 | console.log('devDependency of:', allDevDeps);
|
94 | console.log(`\n "${name}": "${version}"`);
|
95 | });
|
96 | }
|
97 |
|
\ | No newline at end of file |