import/no-absolute-path 可疑
它的作用
此规则禁止使用绝对路径导入模块。
为什么这是不好的?
Node.js 允许使用绝对路径(例如 /home/xyz/file.js)导入模块。这种做法是不良实践,因为它将代码与你的计算机绑定,从而导致在分发到 npm 等包管理器时无法使用。
示例
此规则的 错误 代码示例:
js
import f from "/foo";
import f from "/some/path";
var f = require("/foo");
var f = require("/some/path");此规则的 正确 代码示例:
js
import _ from "lodash";
import foo from "foo";
import foo from "./foo";
var _ = require("lodash");
var foo = require("foo");
var foo = require("./foo");{ amd: true } 选项的 错误 代码示例:
js
define("/foo", function (foo) {});
require("/foo", function (foo) {});{ amd: true } 选项的 正确 代码示例:
js
define("./foo", function (foo) {});
require("./foo", function (foo) {});配置
此规则接受一个包含以下属性的配置对象:
amd
type: boolean
默认值: false
如果设置为 true,则会解析 AMD 风格的 define 和 require 调用中的依赖路径:
js
/* import/no-absolute-path: ["error", { "commonjs": false, "amd": true }] */
define(["/foo"], function (foo) {
/*...*/
}); // 会被报告
require(["/foo"], function (foo) {
/*...*/
}); // 会被报告
const foo = require("/foo"); // 被忽略,因为显式设置了 `commonjs: false`commonjs
type: boolean
默认值: true
如果设置为 true,则会解析 CommonJS 风格的 require 调用中的依赖路径:
js
var foo = require("/foo"); // 会被报告esmodule
type: boolean
默认值: true
如果设置为 true,则会解析 ES 模块 import 语句中的依赖路径:
js
import foo from "/foo"; // 会被报告如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"plugins": ["import"],
"rules": {
"import/no-absolute-path": "error"
}
}bash
oxlint --deny import/no-absolute-path --import-plugin