ESLint规则限制导入完整的sdk



在我的项目中,开发人员导入完整的sdk,而不仅仅是特定的模块。

例如:

const CognitoIdentityServiceProvider = require('aws-sdk');

这里^开发者想要使用CognitoIdentityServiceProvider,所以他们应该只像下面这样导入CognitoIdentityServiceProvider:

const CognitoIdentityServiceProvider = require('aws-sdk/clients/cognitoidentityserviceprovider');

这在代码审查中也会被忽略。我想添加一些eslint规则来限制导入完整的sdk。

尝试"no-restricted-imports": ["error", "aws-sdk"],但这对require语句不起作用。

规则no-restricted-modules作为no-restricted-imports的对应项(甚至在相应的文档中都提到了)。所以你可以这样配置规则:

"no-restricted-modules": ["error", "aws-sdk"]

无论如何,内置规则已被弃用,建议在eslint-plugin-node:node/no-restricted-require中使用该规则。要使用插件规则,首先安装eslint-plugin-node:

npm install -D eslint-plugin-node
然后,在ESLint配置中,声明插件并配置规则(注意不同的配置):
{
...
"plugins": ["node"],
"rules": {
"node/no-restricted-require":
[
"error",
[
{
"name": "aws-sdk",
"message": "Please, require a more specific module."
}
]
]
}
...
}

最后,我要指出的是,eslint-plugin-node已经有一年多没有维护了,所以你可能想用eslint-plugin-n来代替。

最新更新