Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(website): configure eslint config similiar to asyncapi website #2031

Merged
merged 11 commits into from
Jun 29, 2024
Merged
Show file tree
Hide file tree
Changes from 7 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
3 changes: 2 additions & 1 deletion modelina-website/.eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
node_modules
.next
.next
devilkiller-ag marked this conversation as resolved.
Show resolved Hide resolved
/**/*.css
12 changes: 0 additions & 12 deletions modelina-website/.eslintrc
devilkiller-ag marked this conversation as resolved.
Show resolved Hide resolved

This file was deleted.

268 changes: 267 additions & 1 deletion modelina-website/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,269 @@
{
"extends": "next/core-web-vitals"
"root": true,
"extends": [
"airbnb-base",
"next/core-web-vitals",
"eslint:recommended",
"plugin:prettier/recommended"
],
"env": {
"browser": true,
"es2021": true,
"node": true
},
"plugins": ["react", "jsx-a11y"],
"rules": {
"prettier/prettier": [
"error",
{
"singleQuote": true,
"endOfLine": "auto",
"semi": true,
"tabWidth": 2,
"trailingComma": "none",
"arrowParens": "always",
"bracketSpacing": true,
"jsxBracketSameLine": false,
"useTabs": false,
"quoteProps": "as-needed",
"insertPragma": false,
"requirePragma": false,
"jsxSingleQuote": true,
"printWidth": 120
}
],
"max-len": [
"error",
{
"code": 120,
"ignoreUrls": true,
"ignorePattern": "(className=\\{[\\s\\S]*\\}|.*\\}|'.*'|className='.*')" // Ignore classnames
}
]
},
"globals": {
"React": true,
"expect": true,
"jsdom": true,
"JSX": true
},
"overrides": [
// Configuration for TypeScript files
{
"files": ["**/*.ts", "**/*.tsx", "netlify/*.ts"],
"plugins": [
"@typescript-eslint",
"tailwindcss",
"unused-imports",
"simple-import-sort"
],
"extends": [
"plugin:tailwindcss/recommended",
"airbnb-typescript",
"next/core-web-vitals",
"plugin:prettier/recommended"
],
"parserOptions": {
"project": "./tsconfig.json"
},
"rules": {
"react/destructuring-assignment": "off", // Vscode doesn't support automatically destructuring, it's a pain to add a new variable
"react/require-default-props": "off", // Allow non-defined react props as undefined
"react/jsx-props-no-spreading": "off", // _app.tsx uses spread operator and also, react-hook-form
"react-hooks/exhaustive-deps": "off", // Incorrectly report needed dependency with Next.js router
"@next/next/no-img-element": "off", // We currently not using next/image because it isn't supported with SSG mode
"@next/next/link-passhref": "off", // Only needed when the child of Link wraps an <a> tag
"@typescript-eslint/comma-dangle": "off", // Avoid conflict rule between Eslint and Prettier
"@typescript-eslint/indent": "off", // Avoid conflict rule between Eslint and Prettier
"@typescript-eslint/consistent-type-imports": "error", // Ensure `import type` is used when it's necessary
"no-restricted-syntax": [
"error",
"ForInStatement",
"LabeledStatement",
"WithStatement"
], // Overrides Airbnb configuration and enable no-restricted-syntax
"import/prefer-default-export": "off", // Named export is easier to refactor automatically
"tailwindcss/no-custom-classname": "off", // Disabled otherwise nightmare to allow each custom tailwind classes
"simple-import-sort/imports": "error", // Import configuration for `eslint-plugin-simple-import-sort`
"simple-import-sort/exports": "error", // Export configuration for `eslint-plugin-simple-import-sort`
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-unused-expressions": [
"error",
{
"allowShortCircuit": true
devilkiller-ag marked this conversation as resolved.
Show resolved Hide resolved
}
],
"class-methods-use-this": "off",
"unused-imports/no-unused-imports": "error",
"unused-imports/no-unused-vars": [
"error",
{ "argsIgnorePattern": "^_" }
],
// Variables
"init-declarations": "off",
"no-catch-shadow": "off",
"no-delete-var": "error",
"no-label-var": "error",
"no-restricted-globals": "error",
"no-shadow": "off",
"no-shadow-restricted-names": "error",
"no-undef": "error",
"no-undef-init": "error",
"no-undefined": "off",
"no-unused-vars": "error",
"no-use-before-define": "error",
// Styling
"array-bracket-newline": "off",
"array-bracket-spacing": "error",
"array-element-newline": "off",
"block-spacing": "error",
"brace-style": [
"off",
"stroustrup",
{
"allowSingleLine": true
}
],
"camelcase": "off",
"capitalized-comments": "off",
"comma-dangle": ["error", "never"],
"comma-spacing": [
2,
{
"before": false,
"after": true
}
],
"comma-style": ["error", "last"],
"eol-last": "error",
"func-call-spacing": "error",
"func-name-matching": "error",
"func-names": "off",
"func-style": "off",
"jsx-quotes": ["error", "prefer-single"],
"key-spacing": "error",
"keyword-spacing": "error",
"line-comment-position": "off",
"linebreak-style": ["error", "unix"],
"lines-around-comment": [
"error",
{
"beforeBlockComment": true,
"afterBlockComment": false,
"beforeLineComment": false,
"afterLineComment": false,
"allowBlockStart": true,
"allowBlockEnd": false,
"allowObjectStart": true,
"allowObjectEnd": false,
"allowArrayStart": true,
"allowArrayEnd": false
}
],
"max-depth": "error",
"max-lines": [
"error",
{
"max": 2000
}
],
"max-nested-callbacks": "error",
"max-statements-per-line": [
"error",
{
"max": 2
}
],
"multiline-comment-style": "off",
"multiline-ternary": "off",
"new-cap": "off",
"new-parens": "error",
"newline-per-chained-call": [
"error",
{
"ignoreChainWithDepth": 4
}
],
"newline-after-var": ["error", "always"],
"no-array-constructor": "error",
"no-lonely-if": "error",
"no-mixed-operators": "off",
"no-mixed-spaces-and-tabs": "error",
"no-multi-assign": "off",
"no-multiple-empty-lines": [
"error",
{
"max": 1
}
],
"no-negated-condition": "error",
"no-nested-ternary": "error",
"no-new-object": "error",
"no-plusplus": "off",
"no-tabs": "error",
"no-ternary": "off",
"no-trailing-spaces": "error",
"no-unneeded-ternary": "error",
"no-whitespace-before-property": "error",
"nonblock-statement-body-position": "error",
"object-curly-newline": "off",
"object-curly-spacing": ["error", "always"],
"object-property-newline": "off",
"padded-blocks": ["error", "never"],
"padding-line-between-statements": [
"error",
{
"blankLine": "always",
"prev": "*",
"next": "return"
},
{
"blankLine": "always",
"prev": ["const", "let", "var"],
"next": "*"
},
{
"blankLine": "any",
"prev": ["const", "let", "var"],
"next": ["const", "let", "var"]
}
],
"quote-props": ["error", "as-needed"],
"quotes": [
"error",
"single",
{
"avoidEscape": true
}
],
"require-jsdoc": "warn",
"semi": "error",
"semi-spacing": "error",
"semi-style": ["error", "last"],
"sort-keys": "off",
"sort-vars": "off",
"space-before-blocks": "error",
"space-before-function-paren": "error",
"space-in-parens": "error",
"space-infix-ops": "error",
"space-unary-ops": "error",
"spaced-comment": [
"error",
"always",
{
"block": {
"exceptions": ["!"]
}
}
],
"switch-colon-spacing": "error"
}
},
{
"files": ["components/logos/*"],
"rules": {
"max-len": "off"
}
}
]
}
7 changes: 6 additions & 1 deletion modelina-website/next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ if (isGithubActions) {
/** @type {import('next').NextConfig} */
const nextConfig = {
assetPrefix: assetPrefix,
basePath: basePath
basePath: basePath,
eslint: {
// Warning: This allows production builds to successfully complete even if
// your project has ESLint errors.
ignoreDuringBuilds: true,
}
}

module.exports = nextConfig
Loading
Loading