yaml.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import type { Linter } from 'eslint';
  2. import { interopDefault } from '../util';
  3. export async function yaml(): Promise<Linter.Config[]> {
  4. const [pluginYaml, parserYaml] = await Promise.all([
  5. interopDefault(import('eslint-plugin-yml')),
  6. interopDefault(import('yaml-eslint-parser')),
  7. ] as const);
  8. return [
  9. {
  10. files: ['**/*.y?(a)ml'],
  11. plugins: {
  12. yaml: pluginYaml,
  13. },
  14. languageOptions: {
  15. parser: parserYaml,
  16. },
  17. rules: {
  18. 'style/spaced-comment': 'off',
  19. 'yaml/block-mapping': 'error',
  20. 'yaml/block-sequence': 'error',
  21. 'yaml/no-empty-key': 'error',
  22. 'yaml/no-empty-sequence-entry': 'error',
  23. 'yaml/no-irregular-whitespace': 'error',
  24. 'yaml/plain-scalar': 'error',
  25. 'yaml/vue-custom-block/no-parsing-error': 'error',
  26. 'yaml/block-mapping-question-indicator-newline': 'error',
  27. 'yaml/block-sequence-hyphen-indicator-newline': 'error',
  28. 'yaml/flow-mapping-curly-newline': 'error',
  29. 'yaml/flow-mapping-curly-spacing': 'error',
  30. 'yaml/flow-sequence-bracket-newline': 'error',
  31. 'yaml/flow-sequence-bracket-spacing': 'error',
  32. 'yaml/indent': ['error', 2],
  33. 'yaml/key-spacing': 'error',
  34. 'yaml/no-tab-indent': 'error',
  35. 'yaml/quotes': [
  36. 'error',
  37. {
  38. avoidEscape: true,
  39. prefer: 'single',
  40. },
  41. ],
  42. 'yaml/spaced-comment': 'error',
  43. },
  44. },
  45. {
  46. files: ['pnpm-workspace.yaml'],
  47. rules: {
  48. 'yaml/sort-keys': [
  49. 'error',
  50. {
  51. order: [
  52. 'packages',
  53. 'overrides',
  54. 'patchedDependencies',
  55. 'hoistPattern',
  56. 'catalog',
  57. 'catalogs',
  58. 'allowedDeprecatedVersions',
  59. 'allowNonAppliedPatches',
  60. 'configDependencies',
  61. 'ignoredBuiltDependencies',
  62. 'ignoredOptionalDependencies',
  63. 'neverBuiltDependencies',
  64. 'onlyBuiltDependencies',
  65. 'onlyBuiltDependenciesFile',
  66. 'packageExtensions',
  67. 'peerDependencyRules',
  68. 'supportedArchitectures',
  69. ],
  70. pathPattern: '^$',
  71. },
  72. {
  73. order: { type: 'asc' },
  74. pathPattern: '.*',
  75. },
  76. ],
  77. },
  78. },
  79. ];
  80. }