UNPKG

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