mirror of
https://github.com/yangshun/tech-interview-handbook.git
synced 2026-03-20 20:25:18 +08:00
190 lines
4.4 KiB
TypeScript
190 lines
4.4 KiB
TypeScript
import { defineConfig } from 'vite-plus';
|
|
|
|
export default defineConfig({
|
|
staged: {
|
|
'*': 'vp check --fix',
|
|
},
|
|
test: {
|
|
passWithNoTests: true,
|
|
},
|
|
fmt: {
|
|
bracketSameLine: true,
|
|
printWidth: 80,
|
|
proseWrap: 'never',
|
|
singleQuote: true,
|
|
trailingComma: 'all',
|
|
sortPackageJson: false,
|
|
overrides: [
|
|
{
|
|
files: ['apps/portal/**/*.{js,jsx,ts,tsx}'],
|
|
options: {
|
|
sortTailwindcss: {
|
|
config: 'apps/portal/tailwind.config.cjs',
|
|
functions: ['clsx'],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
ignorePatterns: [
|
|
'node_modules',
|
|
'.vscode',
|
|
'.next',
|
|
'build',
|
|
'dist',
|
|
'*.tsbuildinfo',
|
|
'*.gitignore',
|
|
'*.svg',
|
|
'*.lock',
|
|
'*.npmignore',
|
|
'*.sql',
|
|
'*.png',
|
|
'*.jpg',
|
|
'*.jpeg',
|
|
'*.gif',
|
|
'*.ico',
|
|
'*.sh',
|
|
'Dockerfile',
|
|
'Dockerfile.*',
|
|
'.env',
|
|
'.env.*',
|
|
'LICENSE',
|
|
'*.log',
|
|
'.DS_Store',
|
|
'.dockerignore',
|
|
'*.patch',
|
|
'*.toml',
|
|
'*.prisma',
|
|
'apps/website/experimental/domain/**/*.html',
|
|
],
|
|
},
|
|
lint: {
|
|
plugins: ['typescript', 'react'],
|
|
categories: {
|
|
correctness: 'error',
|
|
},
|
|
settings: {
|
|
next: {
|
|
rootDir: ['apps/portal/'],
|
|
},
|
|
},
|
|
ignorePatterns: [
|
|
'.next/**',
|
|
'.turbo/**',
|
|
'.cache/**',
|
|
'dist/**',
|
|
'dist-ssr/**',
|
|
'coverage/**',
|
|
'public/dist/**',
|
|
'server/dist/**',
|
|
'apps/portal/build/**',
|
|
'apps/portal/out/**',
|
|
'apps/portal/prisma/**',
|
|
'apps/website/.docusaurus/**',
|
|
'apps/website/.cache-loader/**',
|
|
'apps/website/experimental/**',
|
|
],
|
|
rules: {
|
|
camelcase: [
|
|
'error',
|
|
{
|
|
properties: 'never',
|
|
ignoreDestructuring: true,
|
|
},
|
|
],
|
|
'capitalized-comments': [
|
|
'error',
|
|
'always',
|
|
{
|
|
ignoreConsecutiveComments: true,
|
|
},
|
|
],
|
|
curly: 'error',
|
|
eqeqeq: ['error', 'smart'],
|
|
'func-names': ['error', 'as-needed'],
|
|
'func-style': [
|
|
'error',
|
|
'declaration',
|
|
{
|
|
allowArrowFunctions: true,
|
|
},
|
|
],
|
|
'guard-for-in': 'error',
|
|
'init-declarations': 'error',
|
|
'no-console': [
|
|
'error',
|
|
{
|
|
allow: ['warn', 'error', 'info'],
|
|
},
|
|
],
|
|
'no-else-return': [
|
|
'error',
|
|
{
|
|
allowElseIf: false,
|
|
},
|
|
],
|
|
'no-lonely-if': 'error',
|
|
'no-shadow': 'off',
|
|
'no-unused-vars': [
|
|
'error',
|
|
{
|
|
argsIgnorePattern: '^_',
|
|
},
|
|
],
|
|
'operator-assignment': 'error',
|
|
'prefer-const': 'error',
|
|
'prefer-destructuring': [
|
|
'error',
|
|
{
|
|
object: true,
|
|
},
|
|
],
|
|
radix: 'error',
|
|
'react/button-has-type': 'error',
|
|
'react/display-name': 'off',
|
|
'react/exhaustive-deps': 'off',
|
|
'react/jsx-boolean-value': ['error', 'always'],
|
|
'react/jsx-curly-brace-presence': [
|
|
'error',
|
|
{
|
|
props: 'never',
|
|
children: 'never',
|
|
},
|
|
],
|
|
'react/jsx-no-useless-fragment': 'error',
|
|
'react/no-array-index-key': 'error',
|
|
'react/no-unescaped-entities': 'off',
|
|
'react/react-in-jsx-scope': 'off',
|
|
'react/void-dom-elements-no-children': 'error',
|
|
'typescript/array-type': [
|
|
'error',
|
|
{
|
|
default: 'generic',
|
|
readonly: 'generic',
|
|
},
|
|
],
|
|
'typescript/ban-ts-comment': 'off',
|
|
'typescript/consistent-generic-constructors': ['error', 'constructor'],
|
|
'typescript/consistent-indexed-object-style': ['error', 'record'],
|
|
'typescript/consistent-type-definitions': ['error', 'type'],
|
|
'typescript/consistent-type-imports': 'error',
|
|
'typescript/dot-notation': 'error',
|
|
'typescript/no-duplicate-enum-values': 'error',
|
|
'typescript/no-explicit-any': 'off',
|
|
'typescript/no-for-in-array': 'error',
|
|
'typescript/prefer-optional-chain': 'error',
|
|
'typescript/require-array-sort-compare': 'error',
|
|
'typescript/restrict-plus-operands': 'error',
|
|
},
|
|
overrides: [
|
|
{
|
|
files: ['apps/portal/**/*.{js,jsx,ts,tsx}'],
|
|
plugins: ['typescript', 'react', 'nextjs'],
|
|
rules: {
|
|
'nextjs/no-html-link-for-pages': 'off',
|
|
'nextjs/no-img-element': 'off',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|