繁体   English   中英

Eslint no-restricted-imports 仅限制从 package 根目录导入?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM