text: /*
   * @LastEditors: maqiang
   */
  module.exports = {
    env: {
      es6: true,
    },
    parserOptions: {
      ecmaVersion: 2019,
      sourceType: 'module',
    },
    plugins: [
      'import',
    ],
  
    settings: {
      'import/resolver': {
        node: {
          extensions: [ '.mjs', '.js', '.json' ],
        },
      },
      'import/extensions': [
        '.vue',
        '.js',
        '.mjs',
        '.jsx',
      ],
      'import/core-modules': [
      ],
      'import/ignore': [
        'node_modules',
        '\\.(coffee|scss|css|less|hbs|svg|json)$',
      ],
    },
  
    rules: {
      // Static analysis:
  
      /*
       * Ensure imports point to files/modules that can be resolved
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unresolved.md
       */
      'import/no-unresolved': [ 'error', { commonjs: true, caseSensitive: true } ],
  
      /*
       * Ensure named imports coupled with named exports
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/named.md
       */
      'import/named': 'error',
  
      /*
       * Ensure default import coupled with default export
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/default.md
       */
      'import/default': 'off',
  
      /*
       * Ensure imported namespaces contain dereferenced properties as they are dereferenced
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/namespace.md
       */
      'import/namespace': 'off',
  
      /*
       * Restrict which files can be imported in a given folder
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-restricted-paths.md
       */
      'import/no-restricted-paths': 'off',
  
      /*
       * Forbid import of modules using absolute paths
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-absolute-path.md
       */
      'import/no-absolute-path': 'error',
  
      /*
       * Forbid require() calls with expressions
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-dynamic-require.md
       */
      'import/no-dynamic-require': 'error',
  
      /*
       * prevent importing the submodules of other modules
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-internal-modules.md
       */
      'import/no-internal-modules': [ 'off', {
        allow: [],
      } ],
  
      /*
       * Forbid Webpack loader syntax in imports
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-webpack-loader-syntax.md
       */
      'import/no-webpack-loader-syntax': 'error',
  
      /*
       * Forbid a module from importing itself
       * https://github.com/benmosher/eslint-plugin-import/blob/44a038c06487964394b1e15b64f3bd34e5d40cde/docs/rules/no-self-import.md
       */
      'import/no-self-import': 'error',
  
      /*
       * Forbid cyclical dependencies between modules
       * https://github.com/benmosher/eslint-plugin-import/blob/d81f48a2506182738409805f5272eff4d77c9348/docs/rules/no-cycle.md
       */
      'import/no-cycle': [ 'error', { maxDepth: Infinity } ],
  
      /*
       * Ensures that there are no useless path segments
       * https://github.com/benmosher/eslint-plugin-import/blob/ebafcbf59ec9f653b2ac2a0156ca3bcba0a7cf57/docs/rules/no-useless-path-segments.md
       */
      'import/no-useless-path-segments': 'error',
  
      /*
       * Use this rule to prevent imports to folders in relative parent paths.
       * https://github.com/benmosher/eslint-plugin-import/blob/c34f14f67f077acd5a61b3da9c0b0de298d20059/docs/rules/no-relative-parent-imports.md
       */
      'import/no-relative-parent-imports': 'off',
  
      /*
       * Reports modules without any exports, or with unused exports
       * https://github.com/benmosher/eslint-plugin-import/blob/f63dd261809de6883b13b6b5b960e6d7f42a7813/docs/rules/no-unused-modules.md
       * TODO: enable, semver-major
       */
      'import/no-unused-modules': [ 'off', {
        ignoreExports: [],
        missingExports: true,
        unusedExports: true,
      } ],
  
      // Helpful warnings:
  
      /*
       * disallow invalid exports, e.g. multiple defaults
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/export.md
       */
      'import/export': 'error',
  
      /*
       * do not allow a default import name to match a named export
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default.md
       */
      'import/no-named-as-default': 'error',
  
      /*
       * warn on accessing default export property names that are also named exports
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default-member.md
       */
      'import/no-named-as-default-member': 'error',
  
      /*
       * disallow use of jsdoc-marked-deprecated imports
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-deprecated.md
       */
      'import/no-deprecated': 'off',
  
      /*
       * Forbid the use of extraneous packages
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-extraneous-dependencies.md
       * paths are treated both as absolute paths, and relative to process.cwd()
       */
      'import/no-extraneous-dependencies': [ 'error', {
        devDependencies: [
          'test/**', // tape, common npm pattern
          'tests/**', // also common npm pattern
          'spec/**', // mocha, rspec-like pattern
          '**/__tests__/**', // jest pattern
          '**/__mocks__/**', // jest pattern
          'test.{js,jsx}', // repos with a single test file
          'test-*.{js,jsx}', // repos with multiple top-level test files
          '**/*{.,_}{test,spec}.{js,jsx}', // tests where the extension or filename suffix denotes that it is a test
          '**/jest.config.js', // jest config
          '**/jest.setup.js', // jest setup
          '**/vue.config.js', // vue-cli config
          '**/webpack.config.js', // webpack config
          '**/webpack.config.*.js', // webpack config
          '**/rollup.config.js', // rollup config
          '**/rollup.config.*.js', // rollup config
          '**/gulpfile.js', // gulp config
          '**/gulpfile.*.js', // gulp config
          '**/Gruntfile{,.js}', // grunt config
          '**/protractor.conf.js', // protractor config
          '**/protractor.conf.*.js', // protractor config
        ],
        optionalDependencies: false,
      } ],
  
      /*
       * Forbid mutable exports
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-mutable-exports.md
       */
      'import/no-mutable-exports': 'error',
  
      // Module systems:
  
      /*
       * Warn if a module could be mistakenly parsed as a script by a consumer
       * leveraging Unambiguous JavaScript Grammar
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/unambiguous.md
       * this should not be enabled until this proposal has at least been *presented* to TC39.
       * At the moment, it's not a thing.
       */
      'import/unambiguous': 'off',
  
      /*
       * disallow require()
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-commonjs.md
       */
      'import/no-commonjs': 'off',
  
      /*
       * disallow AMD require/define
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-amd.md
       */
      'import/no-amd': 'error',
  
      /*
       * No Node.js builtin modules
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-nodejs-modules.md
       */
      'import/no-nodejs-modules': 'warn',
  
      // Style guide:
  
      /*
       * disallow non-import statements appearing before import statements
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/first.md
       */
      'import/first': 'error',
  
      /*
       * This rule enforces that all exports are declared at the bottom of the file.
       * https://github.com/benmosher/eslint-plugin-import/blob/98acd6afd04dcb6920b81330114e146dc8532ea4/docs/rules/exports-last.md
       */
      'import/exports-last': 'warn',
  
      /*
       * disallow duplicate imports
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md
       */
      'import/no-duplicates': 'error',
  
      /*
       * disallow namespace imports
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-namespace.md
       */
      'import/no-namespace': 'warn',
  
      /*
       * Ensure consistent use of file extension within the import path
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/extensions.md
       */
      'import/extensions': [ 'error', 'ignorePackages', {
        vue: 'never',
        js: 'never',
        mjs: 'never',
        jsx: 'never',
      } ],
  
      /*
       * ensure absolute imports are above relative imports and that unassigned imports are ignored
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/order.md
       */
      'import/order': [ 'error', {
        groups: [ 'builtin', 'external', 'internal', 'parent', 'sibling', 'index' ],
        'newlines-between': 'always',
      } ],
  
      /*
       * Require a newline after the last import/require in a group
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/newline-after-import.md
       */
      'import/newline-after-import': 'error',
  
      /*
       * Require modules with a single export to use a default export
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md
       */
      'import/prefer-default-export': 'warn',
  
      /*
       * Forbid modules to have too many dependencies
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/max-dependencies.md
       */
      'import/max-dependencies': [ 'warn', { max: 10 } ],
  
      /*
       * Prevent unassigned imports
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unassigned-import.md
       * importing for side effects is perfectly acceptable, if you need side effects.
       */
      'import/no-unassigned-import': 'off',
  
      /*
       * Prevent importing the default as if it were named
       * https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-default.md
       */
      'import/no-named-default': 'error',
  
      /*
       * forbid default exports. this is a terrible rule, do not use it.
       * https://github.com/benmosher/eslint-plugin-import/blob/44a038c06487964394b1e15b64f3bd34e5d40cde/docs/rules/no-default-export.md
       */
      'import/no-default-export': 'off',
  
      /*
       * Prohibit named exports. this is a terrible rule, do not use it.
       * https://github.com/benmosher/eslint-plugin-import/blob/1ec80fa35fa1819e2d35a70e68fb6a149fb57c5e/docs/rules/no-named-export.md
       */
      'import/no-named-export': 'off',
  
      /*
       * Reports if a module's default export is unnamed
       * https://github.com/benmosher/eslint-plugin-import/blob/d9b712ac7fd1fddc391f7b234827925c160d956f/docs/rules/no-anonymous-default-export.md
       */
      'import/no-anonymous-default-export': [ 'warn', {
        allowArray: false,
        allowArrowFunction: false,
        allowAnonymousClass: false,
        allowAnonymousFunction: false,
        allowLiteral: false,
        allowObject: false,
      } ],
  
      /*
       * Reports when named exports are not grouped together in a single export declaration
       * or when multiple assignments to CommonJS module.exports or exports object are present
       * in a single file.
       * https://github.com/benmosher/eslint-plugin-import/blob/44a038c06487964394b1e15b64f3bd34e5d40cde/docs/rules/group-exports.md
       */
      'import/group-exports': 'warn',
  
      /*
       * dynamic imports require a leading comment with a webpackChunkName
       * https://github.com/benmosher/eslint-plugin-import/blob/ebafcbf59ec9f653b2ac2a0156ca3bcba0a7cf57/docs/rules/dynamic-import-chunkname.md
       */
      'import/dynamic-import-chunkname': [ 'off', {
        importFunctions: [],
        webpackChunknameFormat: '[0-9a-zA-Z-_/.]+',
      } ],
    },
  }
  