在我的项目中,开发人员导入完整的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
来代替。