import/no-absolute-path Suspicious
何をするか
このルールは、絶対パスを使用してモジュールをインポートすることを禁止します。
なぜ問題なのか
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
default: 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"); // explicit `commonjs: false` のため無視commonjs
type: boolean
default: true
true に設定された場合、CommonJSスタイルの require 呼び出しの依存関係パスが解決されます:
js
var foo = require("/foo"); // 警告対象esmodule
type: boolean
default: 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