如何配置ESLint禁止指定文件夹导入目标文件夹,允许其他文件夹导入
配置ESLint规则实现特定文件夹的导入限制
要实现你需要的导入权限控制,可使用eslint-plugin-import插件的import/no-restricted-paths规则,该规则支持基于文件路径的精准导入限制,完全适配你的需求。
步骤1:安装依赖
先确保已安装eslint-plugin-import插件:
npm install eslint-plugin-import --save-dev # 或使用yarn yarn add eslint-plugin-import --dev # 或使用pnpm pnpm add eslint-plugin-import --save-dev
步骤2:配置ESLint规则
在你的ESLint配置文件(如.eslintrc.js或.eslintrc.json)中添加如下配置:
module.exports = { plugins: ['import'], rules: { 'import/no-restricted-paths': [ 'error', { basePath: __dirname, // 指定项目根目录,确保相对路径能被正确解析为绝对路径 restrictions: [ { from: 'core/models/**', // 匹配发起导入的源文件:core/models下所有文件及子目录文件 to: 'core/services/**', // 禁止导入的目标路径:core/services下所有文件及子目录文件 message: '禁止从core/models目录导入core/services的文件' } ] } ] } }
配置说明
basePath:必须指向项目根目录,ESLint会通过它把相对路径转换为绝对路径,确保路径模式匹配准确。restrictions数组中的规则项:from:用glob模式定义触发限制的源文件范围,core/models/**覆盖core/models下所有层级的文件。to:用glob模式定义被禁止导入的目标文件范围,core/services/**覆盖core/services下所有层级的文件。message:自定义报错提示,让开发者快速明白违规原因。
效果验证
- 当
core/models下的文件尝试导入core/services的文件(比如import { UserService } from '../services/UserService'),ESLint会抛出错误提示。 core/interfaces或其他非core/models目录的文件导入core/services的文件时,不会触发任何规则限制。
内容的提问来源于stack exchange,提问作者Hoppe
相关产品推荐
相关产品推荐

