UNPKG

1.98 kBJavaScriptView Raw
1"use strict";
2
3var fs = require('fs');
4
5var path = require('path');
6/**
7 * Inspiration: https://github.com/facebook/create-react-app/blob/3495286f8f3835d55cbdedbc881ae481eb0a3c65/packages/react-scripts/scripts/utils/verifyPackageTree.js
8 * MIT licenced.
9 */
10
11
12module.exports = function verifyPackageTree() {
13 // $FlowAllowDynamicImport
14 var ownPackageJson = require('../package.json');
15
16 var depsToCheck = Object.keys(ownPackageJson.dependencies).filter(function (dep) {
17 return dep.startsWith('eslint-plugin');
18 });
19 var expectedVersionsByDep = {};
20 depsToCheck.forEach(function (dep) {
21 expectedVersionsByDep[dep] = ownPackageJson.dependencies[dep].replace(/^[~^]/, '');
22 }); // Verify we don't have other versions up the tree.
23
24 var currentDir = __dirname;
25
26 var _loop2 = function _loop2() {
27 var previousDir = currentDir;
28 currentDir = path.resolve(currentDir, '..');
29
30 if (currentDir === previousDir) {
31 return "break"; // We've reached the root.
32 }
33
34 var maybeNodeModules = path.resolve(currentDir, 'node_modules');
35
36 if (!fs.existsSync(maybeNodeModules)) {
37 return "continue";
38 }
39
40 depsToCheck.forEach(function (dep) {
41 var maybeDep = path.resolve(maybeNodeModules, dep);
42
43 if (!fs.existsSync(maybeDep)) {
44 return;
45 }
46
47 var maybeDepPackageJson = path.resolve(maybeDep, 'package.json');
48
49 if (!fs.existsSync(maybeDepPackageJson)) {
50 return;
51 }
52
53 var depPackageJson = JSON.parse(fs.readFileSync(maybeDepPackageJson, 'utf8'));
54 var expectedVersion = expectedVersionsByDep[dep];
55
56 if (depPackageJson.version !== expectedVersion) {
57 console.warn('There might be a problem with the following plugin: %s (used %s but expected %s)', dep, depPackageJson.version, expectedVersion);
58 }
59 });
60 };
61
62 _loop: while (true) {
63 var _ret = _loop2();
64
65 switch (_ret) {
66 case "break":
67 break _loop;
68
69 case "continue":
70 continue;
71 }
72 }
73};
\No newline at end of file