Skip to content

Commit

Permalink
feat: create @frameless/eslint-config package
Browse files Browse the repository at this point in the history
  • Loading branch information
Robbert committed Oct 20, 2024
1 parent 5b7e28e commit aaaff59
Show file tree
Hide file tree
Showing 10 changed files with 611 additions and 369 deletions.
17 changes: 0 additions & 17 deletions .eslintignore

This file was deleted.

115 changes: 0 additions & 115 deletions .eslintrc.js.json

This file was deleted.

93 changes: 0 additions & 93 deletions .eslintrc.json

This file was deleted.

8 changes: 0 additions & 8 deletions .eslintrc.react.json

This file was deleted.

3 changes: 3 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import config from '@frameless/eslint-config';

export default config;
17 changes: 10 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,17 @@
],
"devDependencies": {
"@changesets/cli": "2.27.8",
"@frameless/eslint-config": "workspace:*",
"@types/node": "22.5.5",
"@typescript-eslint/eslint-plugin": "8.6.0",
"@typescript-eslint/parser": "8.6.0",
"eslint": "8.57.1",
"eslint": "9.13.0",
"eslint-config-prettier": "9.1.0",
"eslint-plugin-import": "2.30.0",
"eslint-plugin-json": "3.1.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-json": "4.0.1",
"eslint-plugin-mdx": "3.1.5",
"eslint-plugin-react": "7.36.1",
"eslint-plugin-react": "7.37.1",
"globals": "15.11.0",
"husky": "9.1.6",
"lint-staged": "15.2.10",
"markdownlint-cli": "0.41.0",
Expand All @@ -43,20 +45,21 @@
"stylelint": "16.9.0",
"stylelint-config-standard-scss": "13.1.0",
"stylelint-order": "6.0.4",
"typescript": "5.6.2"
"typescript": "5.6.2",
"typescript-eslint": "8.10.0"
},
"scripts": {
"build": "pnpm --recursive run build",
"clean": "pnpm --recursive run clean",
"lint": "npm-run-all --continue-on-error lint:** lint-workspaces",
"lint:css": "stylelint --allow-empty-input '**/*.{css,scss}'",
"lint:js": "eslint --ext .js,.cjs,.mjs,.json,.jsx,.mdx,.ts,.tsx --report-unused-disable-directives .",
"lint:js": "eslint",
"lint:md": "markdownlint '**/*.md'",
"lint:package-json": "npmPkgJsonLint .",
"lint:package-lock": "pnpm ls --recursive",
"lint-fix": "npm-run-all --continue-on-error lint-fix:** prettier",
"lint-fix:css": "stylelint --fix '**/*.{css,scss}'",
"lint-fix:js": "eslint --ext .js,.cjs,.mjs,.json,.jsx,.mdx,.ts,.tsx --fix --report-unused-disable-directives .",
"lint-fix:js": "eslint --fix",
"lint-fix:md": "markdownlint --fix '**/*.md'",
"lint-workspaces": "pnpm --recursive --if-present run lint",
"lint-build": "pnpm --recursive --if-present run lint-build",
Expand Down
29 changes: 29 additions & 0 deletions packages/eslint-config/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "@frameless/eslint-config",
"version": "0.0.0",
"author": "Frameless B.V.",
"description": "Default configuration for ESLint",
"license": "EUPL-1.2",
"type": "module",
"main": "src/index.mjs",
"keywords": [
"eslint"
],
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
"repository": {
"type": "git+ssh",
"url": "git@github.com:frameless/design-system.git",
"directory": "packages/eslint-config"
},
"peerDependencies": {
"eslint-config-prettier": "^9",
"eslint-plugin-import": "^2",
"eslint-plugin-react": "^7",
"eslint": "^9",
"globals": "^15",
"typescript-eslint": "^8"
}
}
80 changes: 80 additions & 0 deletions packages/eslint-config/src/index.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import eslintConfigPrettier from 'eslint-config-prettier';
import eslintPluginImport from 'eslint-plugin-import';
import eslintPluginReact from 'eslint-plugin-react';
import globals from 'globals';
import tseslint from 'typescript-eslint';
import { jsRules, reactRules } from './rules.mjs';

export default tseslint.config(
{
name: 'frameless/ignores',
ignores: ['**/build/', '**/coverage/', '**/dist/', '**/tmp/'],
},
{
name: 'frameless/settings',
// https://eslint.org/docs/latest/use/configure/configuration-files#configuring-linter-options
linterOptions: {
reportUnusedDisableDirectives: true,
},
// https://eslint.org/docs/latest/use/configure/configuration-files#configuring-shared-settings
settings: {
react: {
version: 'detect',
},
},
languageOptions: {
parserOptions: {
sourceType: 'module',
},
},
},
{
name: 'frameless/rules',
plugins: {
import: eslintPluginImport,
},
rules: jsRules,
},
...tseslint.configs.recommended,
{
name: 'frameless/tooling',
files: ['**/*.cjs', '**/vite.config.ts'],
languageOptions: {
globals: { ...globals.node },
},
rules: {
'@typescript-eslint/no-require-imports': 'off',
},
},
{
name: 'frameless/test-files',
files: ['**/*.test.{ts,tsx,js,jsx}'],
languageOptions: {
globals: { ...globals.jest },
},
},
{
name: 'frameless/source-code',
files: ['**/src/*.{js,mjs,ts}'],
languageOptions: {
globals: { ...globals.browser },
},
},
{
name: 'frameless/react-jsx',
files: ['**/*.{jsx,tsx}'],
ignores: ['**/web-components-stencil/**/*.{jsx,tsx}'],
plugins: {
react: eslintPluginReact,
},
rules: {
...eslintPluginReact.configs.recommended.rules,
...eslintPluginReact.configs['jsx-runtime'].rules,
...reactRules,
},
},
{
name: 'eslint-config-prettier',
...eslintConfigPrettier,
},
);
Loading

0 comments on commit aaaff59

Please sign in to comment.