AlloyTeamフロントエンドjs仕様に従って構成されたeslintrc

38865 ワード

先日テンセントAlloy Teamチームのjs規範に基づいて、eslintrcを配置し、完成度90%+を設定しました.構成はjs方式で導入される.注意:ここでは3つのeslintプラグインを参照しています.インストールを忘れないでください.
module.exports = {
    env: { //             
        browser: true,
        jquery: true
    },
    'extends': [
        'eslint:recommended'
    ],
    plugins: [
        'html',
        'require-jsdoc-except',
        'dollar-sign'
    ],
    rules: {
        /*
         *            
         */

        /*        */
        indent: [1, 4, { //   4      switch-case case   
            SwitchCase: 1
        }],

        /*        */
        semi: [1, 'always'], //                        
        'semi-spacing': [1, { //         ,        
            before: false,
            after: true
        }],
        'semi-style': 1, //          

        /*        */
        'comma-dangle': [1, 'never'], //               
        'comma-spacing': [1, { //           ,          
            before: false,
            after: true
        }],

        /*        */
        'key-spacing': [1, { //                       
            beforeColon: false,
            afterColon: true
        }],
        'no-multi-spaces': 1, //         
        'no-trailing-spaces': 1, //       
        'no-whitespace-before-property': 1, //         
        'space-before-blocks': [1, 'always'], //           
        'space-before-function-paren': [1, 'never'], //               
        'space-in-parens': 1, //            
        'space-infix-ops': 1, //           
        'space-unary-ops': [1, { //                                  
            words: true, //         new、delete、typeof、void...
            nonwords: false //          -、+、--、++、!、!!...
        }],
        'spaced-comment': [1, 'always', { //        //   /*        
            line: {
                exceptions: ['-', '+'],
                markers: ['/']
            },
            block: {
                exceptions: ['*'],
                markers: ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!'],
                balanced: true
            }
        }],
        'array-bracket-spacing': 1, //       '['     ']'      
        'block-spacing': [1, 'always'], //                  token         ,                token         ,
        'computed-property-spacing': [1, 'never'], //             
        'func-call-spacing': 1, //                  
        'keyword-spacing': [1, { //                
            before: false,
            after: true,
            overrides: {
                'else': {
                    before: true
                },
                'while': {
                    before: true
                },
                'catch': {
                    before: true
                },
                'finally': {
                    before: true
                }
            }
        }],
        'object-curly-spacing': [1, 'never'], //       '{'  '}'     
        'switch-colon-spacing': 1, //     switch        ,    switch        

        /*        */
        'eol-last': [1, 'always'], //               
        'lines-around-comment': [1, { //            
            beforeBlockComment: true,
            beforeLineComment: true,
            allowBlockStart: true,
            allowObjectStart: true,
            allowArrayStart: true,
            allowClassStart: true
        }],
        'lines-between-class-members': 1, //             
        'no-multiple-empty-lines': [1, { //         
            max: 2
        }],
        'padding-line-between-statements': [1, { //            
            blankLine: 'always',
            prev: 'var',
            next: '*'
        }, { //   "     "       {}, if (a) {}, while (a) {}
            blankLine: 'always',
            prev: 'block-like',
            next: '*'
        }],

        /*        */
        'one-var-declaration-per-line': 1, //              
        'operator-linebreak': [1, 'after'], //              
        'comma-style': 1, //            
        'brace-style': [1, '1tbs'], //        one true brace style  ,                      

        /*        */
        // 'multiline-comment-style': 1, //                 。  ,              *
        'require-jsdoc-except/require-jsdoc': [1, { //     jsdoc          
            require: {
                FunctionDeclaration: true,
                MethodDefinition: true,
                ClassDeclaration: true,
                ArrowFunctionExpression: true,
                FunctionExpression: true
            },
            ignore: ['controller', 'link', 'success', 'error']
        }],

        /*        */
        quotes: [1, 'single'], // js      

        /*          */
        camelcase: [1, { //            (      )
            properties: 'never'
        }],
        'new-cap': 1, //            
        'id-blacklist': [1, 'break', 'case', 'catch', 'continue', 'default', 'delete', 'do', 'else', 'finally', 'for', 'function', 'if', 'in', 'instanceof', 'new', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'var', 'void', 'while', 'with', 'abstract', 'boolean', 'byte', 'char', 'class', 'const', 'debugger', 'double', 'enum', 'export', 'extends', 'final', 'float', 'goto', 'implements', 'import', 'int', 'interface', 'long', 'native', 'package', 'private', 'protected', 'public', 'short', 'static', 'super', 'synchronized', 'throws', 'transient', 'volatile'], //                 
        'dollar-sign/dollar-sign': [2, 'ignoreProperties'], // jquery     '$'    

        /*          */
        // 'vars-on-top': 1, //                  
        'one-var': [1, 'consecutive'], //                ,                  

        /*        */
        'wrap-iife': [1, 'inside'], //               
        'func-names': [1, 'never'], //    inline function  

        /*   、       */
        'quote-props': [1, 'as-needed', { //                        ,        
            keywords: true,
            unnecessary: true,
            numbers: true
        }],
        'object-curly-newline': [1, { //         
            ObjectExpression: {
                minProperties: 1
            }
        }],
        'object-property-newline': 1, //             

        /*        */
        curly: [1, 'all'], //                   

        /* jshint     */
        eqeqeq: 1, //      ===   !==
        'no-use-before-define': [1, { //             
            functions: false,
            classes: true,
            variables: true
        }],
        'no-new': 1, //                 ,           
        'no-extra-parens': 1, //         
        'no-unused-vars': 0, //            
        'no-undef': 0, //           
        'no-console': 0, //    cosole
        'no-extend-native': 0, //         
        'no-debugger': 1, //   debugger    
        'no-loop-func': 1, //           
        'no-array-constructor': 1, //   Array    ,
        'no-new-object': 1, //   Object    
        'no-new-func': 1, //   Function    
        'no-new-wrappers': 1, //     String,Number   Boolean    new    

        /*        */
        'linebreak-style': 0, //       'LF'
        'consistent-this': [1, '_this', 'that', 'self'], //     this       '_this', 'that', 'self'       
        'no-empty-function': 1 //        
    }
};

何か分からないことがあったら、私にコメントしたり、eslintドキュメントを見たりしてください.ここには中国語のドキュメントがあります.https://cn.eslint.org/AlloyTeam仕様住所:http://alloyteam.github.io/CodeGuide/