Skip to content

import/no-absolute-path Suspicious ​

🚧 An auto-fix is still under development.

What it does ​

This rule forbids the import of modules using absolute paths.

Why is this bad? ​

Node.js allows the import of modules using an absolute path such as /home/xyz/file.js. That is a bad practice as it ties the code using it to your computer, and therefore makes it unusable in packages distributed on npm for instance.

Examples ​

Examples of incorrect code for this rule:

js
import f from "/foo";
import f from "/some/path";
var f = require("/foo");
var f = require("/some/path");

Examples of correct code for this rule:

js
import _ from "lodash";
import foo from "foo";
import foo from "./foo";

var _ = require("lodash");
var foo = require("foo");
var foo = require("./foo");

Examples of incorrect code for the { amd: true } option:

js
define("/foo", function (foo) {});
require("/foo", function (foo) {});

Examples of correct code for the { amd: true } option:

js
define("./foo", function (foo) {});
require("./foo", function (foo) {});

Options ​

By default, only ES6 imports and CommonJS require calls will have this rule enforced. You may provide an options object providing true/false for any of

  • esmodule: defaults to true
  • commonjs: defaults to true
  • amd: defaults to false

If { amd: true } is provided, dependency paths for AMD-style define and require calls will be resolved:

js
/*eslint import/no-absolute-path: ['error', { commonjs: false, amd: true }]*/
define(["/foo"], function (foo) {
  /*...*/
}); // reported
require(["/foo"], function (foo) {
  /*...*/
}); // reported

const foo = require("/foo"); // ignored because of explicit `commonjs: false`

How to use ​

To enable this rule in the CLI or using the config file, you can use:

bash
oxlint --deny import/no-absolute-path --import-plugin
json
{
  "plugins": ["import"],
  "rules": {
    "import/no-absolute-path": "error"
  }
}

References ​

Released under the MIT License.