New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

eslint-plugin-path-alias

Package Overview
Dependencies
Maintainers
0
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-plugin-path-alias

Enforces usage of path aliases where available instead of relative paths. This helps ensure consistency in how modules are imported across your codebase.

  • 2.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
0
Weekly downloads
 
Created
Source

eslint-plugin-path-alias

Enforces usage of path aliases where available instead of relative paths. This helps ensure consistency in how modules are imported across your codebase.

Installation

Using npm:

npm install --save-dev eslint-plugin-path-alias

Using pnpm:

pnpm add --save-dev eslint-plugin-path-alias

Using Yarn:

yarn add --dev eslint-plugin-path-alias

Examples

Examples of incorrect code for this rule:

// src/lib/speak.js

// With the following path aliases:
// - @/lib ➝ src/lib
// - @/constants ➝ src/constants

import foo from "./greet"; // Should use "@/lib"
import bar from "../constants/hello.i18n.js"; // Sould use "@/constants"

Examples of correct code for this rule:

// src/lib/speak.js

// With the following path aliases:
// - @/lib ➝ src/lib
// - @/constants ➝ src/constants

import foo from "@/lib/greet";
import bar from "@/constants/hello.i18n.js";
import styles from "../styles/foo.css"; // No matching alias so this is okay

Configuration

You can define your path aliases as options to the path-alias/no-relative rule:

import pathAlias from 'eslint-plugin-path-alias';
import { resolve } from 'node:path';

export default [
  {
    plugins: {
      'path-alias': pathAlias,
    },
    rules: {
      'path-alias/no-relative': ['error', {
        paths: {
          // It's recommended to resolve path alias directories as
          // relative paths will be resolved relative to cwd. This
          // may cause unexpected behavior in monorepo setups
          '@': resolve(import.meta.dirname, './src'),
        },
      }],
    },
  },
];

tsconfig.json

If no paths options is provided to the rule, this plugin will attempt to find the nearest tsconfig.json and infer path aliases from the paths option there.

package.json

If no paths are founded in either the rule or a tsconfig.json, this plugin will attempt to find the nearest package.json and infer path aliases from the imports field there. For now, conditional imports are not supported

exceptions

This option permits using relative paths to import sibling files that match a given pattern. This may be useful if you prefer relative paths for files that are collocated and tightly coupled — e.g. importing styles into a React component. Patterns are matched against the basenames and not full file paths. This option also only applies to files in the same directory, not ones in parent or descendent directories.

The exceptions options takes an array of nanomatch globs:

{
  "rules": {
    "path-alias/no-relative": [
      "error",
      {
        "exceptions": ["*.module.css"]
      }
    ]
  }
}

Examples of correct code with the settings above:

// In src/components/Button.js
// Path alias: @/components ➝ src/components
import foo from "@/components/Text";
import styles from "./Button.module.css";
// Or you can still use an alias
import styles from "@/components/Button.module.css";

Notes

  • Does not validate imports using path aliases. Try using import/no-unresolved from eslint-plugin-import for that
  • Does not work with CommonJS imports via require()

FAQs

Package last updated on 24 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc