UNPKG

@kiwicom/eslint-config

Version:

Eslint configuration describing rules for JS used at Kiwi.com.

73 lines (54 loc) 1.98 kB
"use strict"; 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; } } };