@kiwicom/eslint-config
Version:
Eslint configuration describing rules for JS used at Kiwi.com.
73 lines (54 loc) • 1.98 kB
JavaScript
;
var fs = require('fs');
var path = require('path');
/**
* Inspiration: https://github.com/facebook/create-react-app/blob/3495286f8f3835d55cbdedbc881ae481eb0a3c65/packages/react-scripts/scripts/utils/verifyPackageTree.js
* MIT licenced.
*/
module.exports = function verifyPackageTree() {
// $FlowAllowDynamicImport
var ownPackageJson = require('../package.json');
var depsToCheck = Object.keys(ownPackageJson.dependencies).filter(function (dep) {
return dep.startsWith('eslint-plugin');
});
var expectedVersionsByDep = {};
depsToCheck.forEach(function (dep) {
expectedVersionsByDep[dep] = ownPackageJson.dependencies[dep].replace(/^[~^]/, '');
}); // Verify we don't have other versions up the tree.
var currentDir = __dirname;
var _loop2 = function _loop2() {
var previousDir = currentDir;
currentDir = path.resolve(currentDir, '..');
if (currentDir === previousDir) {
return "break"; // We've reached the root.
}
var maybeNodeModules = path.resolve(currentDir, 'node_modules');
if (!fs.existsSync(maybeNodeModules)) {
return "continue";
}
depsToCheck.forEach(function (dep) {
var maybeDep = path.resolve(maybeNodeModules, dep);
if (!fs.existsSync(maybeDep)) {
return;
}
var maybeDepPackageJson = path.resolve(maybeDep, 'package.json');
if (!fs.existsSync(maybeDepPackageJson)) {
return;
}
var depPackageJson = JSON.parse(fs.readFileSync(maybeDepPackageJson, 'utf8'));
var expectedVersion = expectedVersionsByDep[dep];
if (depPackageJson.version !== expectedVersion) {
console.warn('There might be a problem with the following plugin: %s (used %s but expected %s)', dep, depPackageJson.version, expectedVersion);
}
});
};
_loop: while (true) {
var _ret = _loop2();
switch (_ret) {
case "break":
break _loop;
case "continue":
continue;
}
}
};