import/no-absolute-path Suspicious ​
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:
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:
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:
define("/foo", function (foo) {});
require("/foo", function (foo) {});
Examples of correct code for the { amd: true }
option:
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 totrue
commonjs
: defaults totrue
amd
: defaults tofalse
If { amd: true }
is provided, dependency paths for AMD-style define and require calls will be resolved:
/*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:
oxlint --deny import/no-absolute-path --import-plugin
{
"plugins": ["import"],
"rules": {
"import/no-absolute-path": "error"
}
}