You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让自定义ESLint规则仅作用于pages目录下的文件?

解决自定义ESLint插件仅作用于pages目录的问题

先排查路径判断逻辑的问题

你之前的getPageName函数大概率逻辑有误——比如可能只取了文件所在的最后一级目录,而非判断文件是否处于pages目录层级下(举个例子:src/pages/home/index.js的最后一级目录是home,不是pages),这直接导致你的条件判断失效。

正确的路径判断实现方式

用Node.js的path模块配合ESLint的context对象处理路径,确保跨平台兼容(Windows用\,Linux/macOS用/),下面是两种可行方案:

方案1:基于相对路径判断

在规则代码里引入path模块,通过相对项目根目录的路径来判断:

const path = require('path');

module.exports = {
  rules: {
    'moment-constants-required': {
      create(context) {
        // 获取文件绝对路径
        const filePath = path.resolve(context.getFilename());
        // 获取ESLint运行的工作目录(项目根目录)
        const projectRoot = context.getCwd();
        // 转成相对于根目录的路径
        const relativePath = path.relative(projectRoot, filePath);
        
        // 根据你的目录结构调整判断逻辑:比如判断路径是否以pages开头,或包含pages目录
        const isInPagesDir = relativePath.startsWith('pages/') || relativePath.includes('/pages/');
        
        // 不在pages目录则直接返回空对象,跳过检查
        if (!isInPagesDir) {
          return {};
        }

        // 下面是你原本的规则检查逻辑
        return {
          // 你的规则代码
        };
      }
    }
  }
};

方案2:用正则匹配路径

如果pages目录的层级固定,也可以用正则直接匹配文件路径:

const path = require('path');

module.exports = {
  rules: {
    'moment-constants-required': {
      create(context) {
        const filePath = context.getFilename();
        // 正则兼容跨平台路径分隔符,匹配pages目录
        const pagesRegex = new RegExp(`[\\\\/]pages[\\\\/]`);
        if (!pagesRegex.test(filePath)) {
          return {};
        }

        // 你的规则检查逻辑
        return {
          // ...
        };
      }
    }
  }
};

更灵活的替代方案:在ESLint配置中用overrides

其实不用修改插件代码,直接在项目的.eslintrc.js里配置overrides,就能指定规则仅作用于pages目录的文件,这种方式更灵活:

module.exports = {
  // 其他全局配置
  overrides: [
    {
      // 匹配pages目录下的所有文件
      files: ['pages/**/*'],
      // 启用你的自定义规则
      rules: {
        't1-group/moment-constants-required': 'error'
      }
    }
  ]
};

额外注意点

  • 如果你的pages目录是嵌套结构(比如src/pages),要对应调整判断逻辑,比如把startsWith('pages/')改成startsWith('src/pages/')
  • 调试时可以打印filePath和relativePath的值,确认路径判断逻辑是否正确

内容的提问来源于stack exchange,提问作者Emil22878

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:42:09