【问题标题】:Custom Eslint rules in monorepomonorepo 中的自定义 Eslint 规则
【发布时间】:2020-01-29 17:49:53
【问题描述】:

我有一个带有服务器和前端的 monorepo。我想将一组自定义 eslint 规则合并到我的 repo 的前端组件中。我找不到告诉 eslint 在我的前端目录中的特定文件夹中有自定义规则的方法。我不想创建新的外部存储库并发布它以导入规则。到目前为止,我认为做我想做的事情的方法是在主仓库中创建一个子包(使用它自己的 package.json)。

在我的根 package.json 我有 "eslint-plugin-atlas": "file:./src/main/javascript/build/eslint",

在我的根 .eslintrc 我有 "plugin:atlas/recommended"

在 package.json 中指定的目录中,在 index.js 中,我有以下代码;

'use strict';

module.exports = {
    rules: {
        'tsx-qualified-class-state-definition': {
            meta: {
                docs: {
                    description: 'A test rule',
                    category: 'Best Practices',
                    recommended: true,
                },
            },
            create: function(context) {
                console.log(context, 'THIS HAS BEEN HIT');
                return {};
            },
        },
    },
    configs: {
        recommended: {
            rules: {
                'tsx-qualified-class-state-definition': 'error',
            },
        },
    },
};

显然,上述 lint 规则不会产生正确的 linting,但我希望看到控制台语句被输出。当我的 intellij IDE 尝试读取配置时出现错误;

Error: Failed to load config "plugin:atlas/recommended" to extend from.
Referenced from: F:\dev\workspace\lepton\src\main\javascript\build\.eslintrc.json
    at configMissingError (F:\dev\workspace\lepton\node_modules\eslint\lib\cli-engine\config-array-factory.js:233:9)
    at ConfigArrayFactory._loadExtendedPluginConfig (F:\dev\workspace\lepton\node_modules\eslint\lib\cli-engine\config-array-factory.js:674:31)
    at ConfigArrayFactory._loadExtends (F:\dev\workspace\lepton\node_modules\eslint\lib\cli-engine\config-array-factory.js:607:29)
    at ConfigArrayFactory._normalizeObjectConfigDataBody (F:\dev\workspace\lepton\node_modules\eslint\lib\cli-engine\config-array-factory.js:545:25)
    at _normalizeObjectConfigDataBody.next (<anonymous>)
    at ConfigArrayFactory._normalizeObjectConfigData (F:\dev\workspace\lepton\node_modules\eslint\lib\cli-engine\config-array-factory.js:491:20)
    at _normalizeObjectConfigData.next (<anonymous>)
    at createConfigArray (F:\dev\workspace\lepton\node_modules\eslint\lib\cli-engine\config-array-factory.js:307:25)
    at ConfigArrayFactory.loadFile (F:\dev\workspace\lepton\node_modules\eslint\lib\cli-engine\config-array-factory.js:382:16)
    at createCLIConfigArray (F:\dev\workspace\lepton\node_modules\eslint\lib\cli-engine\cascading-config-array-factory.js:140:35)

当我运行 eslint 时出现错误 Definition for rule 'tsx-qualified-class-state-definition' was not found tsx-qualified-class-state-definition

【问题讨论】:

    标签: javascript eslint


    【解决方案1】:

    不是 eslint 内置的解决方案,但是可以通过下面的 eslint 插件来完成;

    npmjs.com/eslint-plugin-rulesdir

    【讨论】:

      【解决方案2】:

      如果我错了,请纠正我,但这不是一种反模式吗?我认为您应该在每个包目录中都有配置。

      /
       - package.json
         /packages
             /pkg-1
               - .eslintrc.json
             /pkg-2
               - .eslintrc.json
      

      请参阅here 了解更多信息,这是一篇更广泛的帖子,但应该会给你一些指导。

      【讨论】:

      • 我正在处理前端的单个 javascript 包。后端是用 Java 编写的——是的,monorepo 有 java 和 javascript!我不想为了两个包而引入 lerna,我宁愿将我的前端开发为一个包,因为我只会输出一个包。
      猜你喜欢
      • 1970-01-01
      • 2019-12-21
      • 2016-02-03
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 2020-09-26
      • 2019-09-07
      相关资源
      最近更新 更多