Skip to content
← Back to rules

import/no-dynamic-require Restriction

它的作用

禁止使用表达式作为模块参数的导入。这包括在 requireimport 语句中动态解析的路径。

为什么这不好?

在导入语句中使用运行时才会解析的表达式,会使得很难确定模块是从哪里被导入的。这会使代码导航变得复杂,并阻碍静态分析工具的工作;这些工具依赖可预测的模块路径来进行 lint 检查、打包以及其他优化。

示例

以下是此规则下错误代码的示例:

javascript
require(name);
require(`../${name}`);

以下是此规则下正确代码的示例:

javascript
require("../name");
require(`../name`);

配置

此规则接受一个包含以下属性的配置对象:

esmodule

type: boolean

default: false

当为 true 时,也会检查 import() 表达式中的动态模块说明符。

如何使用

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

json
{
  "plugins": ["import"],
  "rules": {
    "import/no-dynamic-require": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  plugins: ["import"],
  rules: {
    "import/no-dynamic-require": "error",
  },
});
bash
oxlint --deny import/no-dynamic-require --import-plugin

版本

此规则是在 v0.9.3 中添加的。

参考资料