![](/img/trans.png)
[英]ESLint: How can I restrict certain paths with "no-restricted-imports" but allow subpaths?
[英]Eslint no-restricted-imports only restrict importing from a package root?
例如,我想限制导入react-use
,但允许react-use/lib/usePrevious
。 我试过了:
rules: {
'no-restricted-imports': [2, { patterns: [
'react-use',
] }],
},
和
rules: {
'no-restricted-imports': [2, { patterns: [
'react-use',
'!react-use/*',
] }],
},
但是,在这两种情况下,我都会收到以下错误:
import usePrevious from 'react-use/lib/usePrevious';
我只想要一个错误:
import something from 'react-use';
这是 ESLint 用于检查每个模式的ignore
库的限制。 它旨在用更紧凑和准系统的东西替换现有的文件忽略方法。
具体来说,问题似乎是这个忽略系统假设您的文件结构严格类似于目录,其中限制react-use
并忽略!react-use/*
意味着react-use
是一个文件夹。 但是,使用模块导入结构, react-use
可以引用文件(通过其index.js
)并同时包含子文件夹,如react-use/lib
使其既可用作文件又可用作文件夹。
因此,在限制子路径的同时,不可能忽略模块的基础。
我想用 lodash 做同样的事情。
对于 Treeshaking,我想限制
从'lodash'导入{get};
但允许
从“lodash/get”导入获取;
为此的 eslint 配置,
'no-restricted-imports': [
'error',
{
paths: [
{
name: 'lodash',
message:
"Please use `import [package] from 'lodash/[package]'` instead."
}
],
patterns: ['!lodash/*']
}
]
您可以对 package 进行相同的尝试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.