Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ src/images/
node_modules/
.idea/
.DS_Store/
dist/
docker/
18 changes: 9 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
SHELL := /bin/bash
.PHONY: format env-fresh lint-fix

.PHONY: format env\:fresh lint\:check lint\:fix
SHELL := /bin/bash
ROOT_PATH := $(shell pwd)

format:
npx prettier --write '**/*.{json,js,ts,tsx,jsx,mjs,cjs,vue,html}' --ignore-path .prettierignore
make lint-fix

env\:fresh:
rm -rf node_modules
env-fresh:
rm -rf $(ROOT_PATH)/node_modules
rm $(ROOT_PATH)/package-lock.json
npm cache clean --force
npm install

lint\:check:
npx eslint . --ext .js,.jsx,.cjs,.mjs,.vue

lint\:fix:
npx eslint . --ext .js,.jsx,.cjs,.mjs,.vue --fix
lint-fix:
npx eslint . --fix
60 changes: 23 additions & 37 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,72 +1,52 @@
// eslint.config.js
import js from '@eslint/js'; // Standard ESLint recommended rules
import pluginVue from 'eslint-plugin-vue'; // Vue plugin (needed for rule references)
import parserVue from 'vue-eslint-parser'; // Parser for .vue files
// Import TypeScript parser and plugin
import js from '@eslint/js';
import pluginVue from 'eslint-plugin-vue';
import parserVue from 'vue-eslint-parser';
import parserTypeScript from '@typescript-eslint/parser';
import pluginTypeScript from '@typescript-eslint/eslint-plugin';
// Import Babel parser (still needed for non-TS JS files if applicable)
import parserBabel from '@babel/eslint-parser'; // Parser for <script> block
import configPrettier from 'eslint-config-prettier'; // Disables conflicting rules

// Grab base globals from the recommended config (if any)
const baseGlobals = js.configs.recommended.languageOptions?.globals || {};
import parserBabel from '@babel/eslint-parser';
import configPrettier from 'eslint-config-prettier';
import globals from 'globals';

export default [
// --- Global Ignores ---
{
ignores: ['dist/', 'build/', 'node_modules/', '.git/', '.vscode/', '.idea/', '*.min.js', '*.css.map', 'public/', 'src/fonts/', 'src/images/'],
},

// --- Apply Standard ESLint Recommended Rules ---
js.configs.recommended,

// --- Basic JS Files (.js, .mjs, .cjs) Configuration ---
// --- Config & Script Files (.js, .mjs, .cjs) ---
{
files: ['**/*.js', '**/*.mjs', '**/*.cjs'],
languageOptions: {
parser: parserBabel,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
requireConfigFile: false,
requireConfigFile: false, // Recommended for babel-parser
},
globals: {
// inherit standard globals (browser, node, etc.)
...baseGlobals,
// explicitly add browser and build globals for JS files
window: 'readonly',
document: 'readonly',
localStorage: 'readonly',
process: 'readonly',
...globals.browser,
...globals.node,
},
},
rules: {
// JS-specific overrides (if needed)
},
},

// --- Vue Files (.vue) Configuration ---
// --- Vue Component Files (.vue) ---
{
files: ['**/*.vue'],
languageOptions: {
parser: parserVue, // mandatory for .vue files
parser: parserVue,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parser: parserTypeScript,
requireConfigFile: false,
project: './tsconfig.json',
extraFileExtensions: ['.vue'],
},
globals: {
// inherit standard globals
...baseGlobals,
// browser/build globals
window: 'readonly',
document: 'readonly',
localStorage: 'readonly',
process: 'readonly',
// Vue compiler macros
...globals.browser,
// Vue 3 Compiler Macros
defineProps: 'readonly',
defineEmits: 'readonly',
defineExpose: 'readonly',
Expand All @@ -78,7 +58,6 @@ export default [
'@typescript-eslint': pluginTypeScript,
},
rules: {
// Vue-specific rules
'vue/no-unused-components': 'error',
'vue/no-mutating-props': 'error',
'vue/require-v-for-key': 'error',
Expand All @@ -92,6 +71,13 @@ export default [
},
},

// --- Prettier Integration ---
{
files: ['src/partials/EducationPartial.vue', 'src/partials/RecommendationPartial.vue'],
rules: {
'vue/no-v-html': 'off',
},
},

// --- Prettier Integration (must be last) ---
configPrettier,
];
Loading