.eslintrc.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. const path = require('path')
  2. module.exports = {
  3. root: true,
  4. env: {
  5. browser: true,
  6. jest: true,
  7. node: true,
  8. },
  9. plugins: ['@typescript-eslint', 'vue', 'prettier', 'jest'],
  10. extends: [
  11. 'airbnb-base',
  12. 'plugin:vue/vue3-recommended',
  13. 'plugin:@typescript-eslint/eslint-recommended',
  14. 'plugin:@typescript-eslint/recommended',
  15. 'plugin:prettier/recommended',
  16. 'plugin:jest/recommended',
  17. '@vue/prettier',
  18. '@vue/typescript/recommended',
  19. '@vue/prettier/@typescript-eslint',
  20. 'prettier',
  21. ],
  22. rules: {
  23. 'vue/script-setup-uses-vars': 'error',
  24. 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  25. 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  26. 'import/no-extraneous-dependencies': [
  27. 'error',
  28. { devDependencies: ['vite.config.ts', 'app/frontend/tests/**/*'] },
  29. ],
  30. // Adding typescript file types, because airbnb doesn't allow this by default.
  31. 'import/extensions': [
  32. 'error',
  33. 'ignorePackages',
  34. {
  35. js: 'never',
  36. mjs: 'never',
  37. jsx: 'never',
  38. ts: 'never',
  39. tsx: 'never',
  40. },
  41. ],
  42. },
  43. overrides: [
  44. {
  45. files: ['*.js'],
  46. rules: {
  47. '@typescript-eslint/no-var-requires': 'off',
  48. },
  49. },
  50. ],
  51. settings: {
  52. 'import/resolver': {
  53. alias: {
  54. map: [
  55. ['@mobile', path.resolve(__dirname, './app/frontend/apps/mobile')],
  56. ['@common', path.resolve(__dirname, './app/frontend/common')],
  57. ],
  58. extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'],
  59. },
  60. node: {
  61. extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'],
  62. },
  63. },
  64. // Adding typescript file types, because airbnb doesn't allow this by default.
  65. 'import/extensions': ['.js', '.jsx', '.ts', '.tsx', '.vue'],
  66. },
  67. globals: {
  68. defineProps: 'readonly',
  69. defineEmits: 'readonly',
  70. defineExpose: 'readonly',
  71. withDefaults: 'readonly',
  72. },
  73. parser: 'vue-eslint-parser',
  74. parserOptions: {
  75. parser: '@typescript-eslint/parser', // the typescript-parser for eslint, instead of tslint
  76. sourceType: 'module', // allow the use of imports statements
  77. ecmaVersion: 2020, // allow the parsing of modern ecmascript
  78. },
  79. }