Add prettier & eslint

This commit is contained in:
Çetin
2024-12-30 17:41:32 +03:00
parent 319b269726
commit f760886f54
6 changed files with 2196 additions and 2 deletions

14
.prettierignore Normal file
View File

@@ -0,0 +1,14 @@
# Ignore artifacts:
build
coverage
dist
out
public
styles
node_modules
.vscode
.angular
*.md
*.yml
/tsconfig.json
*.json

29
.prettierrc.json Normal file
View File

@@ -0,0 +1,29 @@
{
"useTabs": false,
"tabWidth": 4,
"trailingComma": "none",
"semi": true,
"singleQuote": true,
"printWidth": 250,
"bracketSameLine": false,
"overrides": [
{
"files": ["*.ts", "*.mts", "*.d.ts"],
"options": {
"parser": "typescript"
}
},
{
"files": ["*.html"],
"options": {
"parser": "html"
}
},
{
"files": ["*.component.html"],
"options": {
"parser": "angular"
}
}
]
}

89
eslint.config.js Normal file
View File

@@ -0,0 +1,89 @@
export default {
root: true,
ignorePatterns: ['**/dist/**'],
plugins: ['prettier'],
extends: ['prettier'],
rules: {
'padding-line-between-statements': [
'error',
{ blankLine: 'always', prev: ['const', 'let', 'var'], next: '*' },
{ blankLine: 'any', prev: ['const', 'let', 'var'], next: ['const', 'let', 'var'] },
{ blankLine: 'any', prev: ['case', 'default'], next: 'break' },
{ blankLine: 'any', prev: 'case', next: 'case' },
{ blankLine: 'always', prev: '*', next: 'return' },
{ blankLine: 'always', prev: 'block', next: '*' },
{ blankLine: 'always', prev: '*', next: 'block' },
{ blankLine: 'always', prev: 'block-like', next: '*' },
{ blankLine: 'always', prev: '*', next: 'block-like' },
{ blankLine: 'always', prev: ['import'], next: ['const', 'let', 'var'] }
]
},
overrides: [
{
files: ['*.ts'],
parserOptions: {
project: ['tsconfig.json', 'e2e/tsconfig.json'],
createDefaultProgram: true
},
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@angular-eslint/recommended', 'plugin:@angular-eslint/template/process-inline-templates', 'prettier'],
rules: {
'@angular-eslint/component-selector': [
'error',
{
type: 'element',
prefix: 'p',
style: 'kebab-case'
}
],
'@angular-eslint/directive-selector': [
'error',
{
type: 'attribute',
prefix: 'p',
style: 'camelCase'
}
],
'@angular-eslint/component-class-suffix': [
'error',
{
suffixes: ['']
}
],
'@angular-eslint/template/eqeqeq': [
'error',
{
allowNullOrUndefined: true
}
],
'@angular-eslint/no-host-metadata-property': 'off',
'@angular-eslint/no-output-on-prefix': 'off',
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-inferrable-types': 'off',
'arrow-body-style': ['error', 'as-needed'],
curly: 0,
'@typescript-eslint/member-ordering': [
'error',
{
default: ['public-static-field', 'static-field', 'instance-field', 'public-instance-method', 'public-static-field']
}
],
'no-console': 0,
'prefer-const': 0
}
},
{
files: ['*.html'],
extends: ['plugin:@angular-eslint/template/recommended', 'prettier'],
rules: {}
},
{
files: ['*.js'],
rules: {
parserOptions: {
allowImportExportEverywhere: true
}
}
}
]
};

2053
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -37,6 +37,12 @@
"karma-coverage": "~2.2.0", "karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0", "karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0", "karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~5.6.2" "typescript": "~5.6.2",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-prefer-arrow": "^1.2.3",
"eslint-plugin-prettier": "^4.2.1",
"prettier": "^3.0.0",
"eslint": "^9.14.0"
} }
} }

View File

@@ -16,7 +16,10 @@
"moduleResolution": "bundler", "moduleResolution": "bundler",
"importHelpers": true, "importHelpers": true,
"target": "ES2022", "target": "ES2022",
"module": "ES2022" "module": "ES2022",
"paths": {
"@/*": ["./*"]
}
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false, "enableI18nLegacyMessageIdFormat": false,