首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >monorepo中的自定义Eslint规则

monorepo中的自定义Eslint规则
EN

Stack Overflow用户
提问于 2019-09-30 12:20:40
回答 2查看 7.9K关注 0票数 1

我有一个带有服务器和前端的单播。我想在我的回购的前端组件中加入一组定制的eslint规则。我找不到一种方法来告诉eslint在我的前端目录中的特定文件夹中有自定义规则。我不想创建一个新的外部回购和发布这是为了导入规则。到目前为止,我认为实现我想做的事情的方法是在主回购(带有自己的package.json)中创建一个子包。

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

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

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

代码语言:javascript
复制
'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,但是我希望看到console语句被输出。当我的intellij尝试读取配置时,我得到了错误;

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-30 16:24:24

不是内置到eslint中的解决方案,但是这可以用下面的eslint插件来完成;

npmjs.com/eslint-plugin-rulesdir

票数 1
EN

Stack Overflow用户

发布于 2019-12-04 06:04:15

如果我错了就纠正我,但这种反模式不是吗?我想你应该在每个包目录里都有秘密。

代码语言:javascript
复制
/
 - package.json
   /packages
       /pkg-1
         - .eslintrc.json
       /pkg-2
         - .eslintrc.json

请参阅这里获得更多信息,这是一个更广泛的帖子,但应该会给您提供一些指导。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58167801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档