node.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import type { Linter } from 'eslint';
  2. import { interopDefault } from '../util';
  3. export async function node(): Promise<Linter.Config[]> {
  4. const pluginNode = await interopDefault(import('eslint-plugin-n'));
  5. return [
  6. {
  7. plugins: {
  8. n: pluginNode,
  9. },
  10. rules: {
  11. 'n/handle-callback-err': ['error', '^(err|error)$'],
  12. 'n/no-deprecated-api': 'error',
  13. 'n/no-exports-assign': 'error',
  14. 'n/no-extraneous-import': [
  15. 'error',
  16. {
  17. allowModules: [
  18. 'unbuild',
  19. '@vben/vite-config',
  20. 'vitest',
  21. 'vite',
  22. '@vue/test-utils',
  23. '@vben/tailwind-config',
  24. '@playwright/test',
  25. ],
  26. },
  27. ],
  28. 'n/no-new-require': 'error',
  29. 'n/no-path-concat': 'error',
  30. // 'n/no-unpublished-import': 'off',
  31. 'n/no-unsupported-features/es-syntax': [
  32. 'error',
  33. {
  34. ignores: [],
  35. version: '>=18.0.0',
  36. },
  37. ],
  38. 'n/prefer-global/buffer': ['error', 'never'],
  39. // 'n/no-missing-import': 'off',
  40. 'n/prefer-global/process': ['error', 'never'],
  41. 'n/process-exit-as-throw': 'error',
  42. },
  43. },
  44. {
  45. files: [
  46. 'scripts/**/*.?([cm])[jt]s?(x)',
  47. 'internal/**/*.?([cm])[jt]s?(x)',
  48. ],
  49. rules: {
  50. 'n/prefer-global/process': 'off',
  51. },
  52. },
  53. ];
  54. }