Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including eslint-plugin-dependencies with all npm packages installed. Try it out:

var eslintPluginDependencies = require("eslint-plugin-dependencies")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

eslint-plugin-dependencies v2.4.0

require/import dependency validation

eslint-plugin-dependencies

Build Status

Usage

npm install eslint-plugin-dependencies

In your .eslintrc:

{
  "plugins": [
    "dependencies"
  ],
  "rules": {
    "dependencies/case-sensitive": 1,
    "dependencies/no-cycles": 1,
    "dependencies/no-unresolved": 1,
    "dependencies/require-json-ext": 1
  }
}

Rules

An eslint plugin that ...

dependencies/case-sensitive

Verifies that require("…"), require.resolve(…), import "…" and export … from "…" ids match the case that is reported by a directory listing.

{
  "plugins": [
    "dependencies"
  ],
  "rules": {
    "dependencies/case-sensitive": [1, {"paths": ["custom-path-to-search-for-modules"]}]
  }
}

dependencies/no-cycles

Prevents cyclic references between modules. It resolves require("…"), import "…" and export … from "…" references to internal modules (i.e. not node_modules), to determine whether there is a cycle. If you're using a custom parser, the rule will use that to parse the dependencies. The rule takes a skip array of strings, that will be treated as regexps to skip checking files.

Additionally, with the types option enabled, you can detect and prevent import type cycles as well. This can be helpful, since the Flow checker can exhibit unexpected behavior with such cycles.

{
  "plugins": [
    "dependencies"
  ],
  "rules": {
    "dependencies/no-cyles": [1, {"skip": ["/spec/", "/vendor/"], "types": true}]
  }
}

dependencies/no-unresolved

Checks that require("…"), require.resolve(…), import "…" and export … from "…" reference modules that exist. Takes an ignore array of modules to ignore.

{
  "plugins": [
    "dependencies"
  ],
  "rules": {
    "dependencies/no-unresolved": [1, {"ignore": ["atom"], "paths": ["custom-path-to-search-for-modules"]}]
  }
}

dependencies/require-json-ext

Ensures that modules are that are .json include their extension in the module id. Supports auto fix.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free