Skip to content

An ESLint plugin for enforcing consistent imports across monorepo packages.

License

Notifications You must be signed in to change notification settings

joshuajaco/eslint-plugin-workspaces

Repository files navigation

eslint-plugin-workspaces npm downloads Coverage Status code style: prettier

An ESLint plugin for enforcing consistent imports across monorepo packages.

It supports:

Installation

# npm
npm install eslint-plugin-workspaces --save-dev

# yarn
yarn add eslint-plugin-workspaces --dev

Configuration

Enable the rules in your ESLint configuration file:

{
  "plugins": ["workspaces"],
  "rules": {
    "workspaces/no-relative-imports": "error",
    "workspaces/require-dependency": "warn"
  }
}

Or add the "recommended" preset:

{
  "extends": ["plugin:workspaces/recommended"]
}

ESLint v9 Flat Config

Enable the rules in your ESLint configuration file:

import workspaces from "eslint-plugin-workspaces";

export default [
  {
    plugins: { workspaces },
    rules: {
      "workspaces/no-relative-imports": "error",
      "workspaces/require-dependency": "warn",
    },
  },
  // ...
];

Or add the "recommended" preset:

import workspaces from "eslint-plugin-workspaces";

export default [
  workspaces.configs["flat/recommended"],
  // ...
];

Rules

✔ included in the "recommended" preset

🔧 fixable using the --fix command line option

Name Description
🔧 no-absolute-imports disallow absolute imports for files that are within the current package
no-cross-imports disallow imports of files that are inside another package
🔧 no-relative-imports disallow relative imports of files that are outside of the current package
require-dependency disallow importing from packages that are not listed as a dependency

Presets

  • recommended enables rules recommended for all users
  • all enables all rules
  • flat/recommended enables rules recommended for all users
  • flat/all enables all rules

License

MIT