refactor: migrate to common eslint+prettier configs

This commit is contained in:
Calum H. (IMB11) 2025-08-01 14:10:30 +01:00 committed by Calum H.
parent 0dee21814d
commit 73a353ab8c
42 changed files with 645 additions and 1757 deletions

View File

@ -1,22 +1,2 @@
import { createConfigForNuxt } from '@nuxt/eslint-config/flat'
import { fixupPluginRules } from '@eslint/compat'
import turboPlugin from 'eslint-plugin-turbo'
export default createConfigForNuxt().append([
{
name: 'turbo',
plugins: {
turbo: fixupPluginRules(turboPlugin),
},
rules: {
'turbo/no-undeclared-env-vars': 'error',
},
},
{
name: 'modrinth',
rules: {
'vue/html-self-closing': 'off',
'vue/multi-word-component-names': 'off',
},
},
])
import config from '@modrinth/tooling-config/eslint/nuxt.mjs'
export default config

View File

@ -41,6 +41,7 @@
"vue-virtual-scroller": "v2.0.0-beta.8"
},
"devDependencies": {
"@modrinth/tooling-config": "workspace:*",
"@eslint/compat": "^1.1.1",
"@formatjs/cli": "^6.2.12",
"@nuxt/eslint-config": "^0.5.6",
@ -48,13 +49,11 @@
"@vitejs/plugin-vue": "^5.0.4",
"autoprefixer": "^10.4.19",
"eslint": "^9.9.1",
"eslint-config-custom": "workspace:*",
"eslint-plugin-turbo": "^2.5.4",
"postcss": "^8.4.39",
"prettier": "^3.2.5",
"sass": "^1.74.1",
"tailwindcss": "^3.4.4",
"tsconfig": "workspace:*",
"typescript": "^5.5.4",
"vite": "^5.4.6",
"vue-tsc": "^2.1.6"

View File

@ -1,7 +0,0 @@
module.exports = {
root: true,
extends: ["../../packages/eslint-config-custom/nuxt.js"],
rules: {
"import/no-unresolved": "off",
},
};

View File

@ -1,4 +0,0 @@
{
"endOfLine": "auto",
"plugins": ["prettier-plugin-tailwindcss"]
}

View File

@ -0,0 +1,2 @@
import config from '@modrinth/tooling-config/eslint/nuxt.mjs'
export default config

View File

@ -24,6 +24,7 @@
"intl:extract": "pnpm ui:intl:extract && pnpm web:intl:extract && pnpm app:intl:extract"
},
"devDependencies": {
"@modrinth/tooling-config": "workspace:*",
"if-ci": "^3.0.0",
"prettier": "^3.3.2",
"turbo": "^2.5.4",
@ -35,10 +36,5 @@
"readable-stream@2.3.8": "patches/readable-stream@2.3.8.patch"
}
},
"prettier": {
"printWidth": 100,
"semi": false,
"singleQuote": true,
"endOfLine": "auto"
}
"prettier": "@modrinth/tooling-config/prettier.config.js"
}

View File

@ -1,8 +0,0 @@
module.exports = {
root: true,
extends: ['custom/library'],
ignorePatterns: ['**/*.scss', '**/*.svg', 'node_modules/', 'dist/', '**/*.gltf'],
env: {
node: true,
},
}

View File

@ -0,0 +1,2 @@
import config from '@modrinth/tooling-config/eslint/nuxt.mjs'
export default config

View File

@ -12,10 +12,8 @@
"icons:generate": "jiti build/generate-exports.ts"
},
"devDependencies": {
"eslint": "^8.57.0",
"eslint-config-custom": "workspace:*",
"@modrinth/tooling-config": "workspace:*",
"jiti": "^2.4.2",
"tsconfig": "workspace:*",
"vue": "^3.5.13"
}
}

View File

@ -1,5 +1,3 @@
{
"extends": "tsconfig/base.json",
"include": [".", "icons.d.ts", ".eslintrc.js"],
"exclude": ["dist", "build", "node_modules"]
"extends": "@modrinth/tooling-config/typescript/vue.json"
}

View File

@ -1,7 +0,0 @@
module.exports = {
root: true,
extends: ['custom/library'],
env: {
node: true,
},
}

View File

@ -0,0 +1,2 @@
import config from '@modrinth/tooling-config/eslint/nuxt.mjs'
export default config

View File

@ -9,14 +9,12 @@
"fix": "jiti ./compile.ts && eslint . --fix && prettier --write ."
},
"devDependencies": {
"@modrinth/tooling-config": "workspace:*",
"@types/glob": "^9.0.0",
"@types/html-minifier-terser": "^7.0.2",
"@types/rss": "^0.0.32",
"@types/xml2js": "^0.4.14",
"eslint": "^8.57.0",
"eslint-config-custom": "workspace:*",
"jiti": "^2.4.2",
"tsconfig": "workspace:*"
"jiti": "^2.4.2"
},
"dependencies": {
"@modrinth/utils": "workspace:*",

View File

@ -1,9 +1,3 @@
{
"extends": "tsconfig/base.json",
"include": [".", ".eslintrc.js"],
"exclude": ["dist", "build", "node_modules"],
"compilerOptions": {
"lib": ["esnext", "dom"],
"noImplicitAny": false
}
"extends": "@modrinth/tooling-config/typescript/base.json"
}

View File

@ -1,3 +0,0 @@
# `eslint-config-custom`
Collection of internal eslint configurations.

View File

@ -1,27 +0,0 @@
const { resolve } = require('node:path')
const project = resolve(process.cwd(), 'tsconfig.json')
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
'prettier',
'plugin:import/recommended',
'plugin:import/typescript',
'turbo',
],
globals: {
React: true,
JSX: true,
},
settings: {
'import/resolver': {
typescript: {
project,
},
},
},
ignorePatterns: ['node_modules/', 'dist/'],
}

View File

@ -1,35 +0,0 @@
const { resolve } = require('node:path')
const project = resolve(process.cwd(), 'tsconfig.json')
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:vue/vue3-recommended',
'@nuxtjs/eslint-config-typescript',
'plugin:prettier/recommended',
'prettier',
'plugin:import/recommended',
'plugin:import/typescript',
'turbo',
],
parserOptions: {
sourceType: 'module',
},
settings: {
'import/resolver': {
typescript: {
project,
},
},
},
ignorePatterns: ['.nuxt/**', '.output/**', 'node_modules', 'dist/**'],
rules: {
'no-console': 'off',
'vue/no-v-html': 'off',
'vue/multi-word-component-names': 'off',
'vue/no-multiple-template-root': 'off',
'import/extensions': ['error', 'always', { ignorePackages: true }],
},
}

View File

@ -1,15 +0,0 @@
{
"name": "eslint-config-custom",
"license": "MIT",
"version": "0.0.0",
"private": true,
"devDependencies": {
"@nuxtjs/eslint-config-typescript": "^12.1.0",
"@vue/eslint-config-typescript": "^13.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-turbo": "^2.0.7",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-unicorn": "^54.0.0",
"typescript": "^5.5.3"
}
}

View File

@ -1,39 +0,0 @@
const { resolve } = require('node:path')
const project = resolve(process.cwd(), 'tsconfig.json')
module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:vue/vue3-recommended',
'plugin:prettier/recommended',
'prettier',
'plugin:import/recommended',
'plugin:import/typescript',
'turbo',
],
parserOptions: {
ecmaVersion: 'latest',
},
settings: {
'import/resolver': {
typescript: {
project,
},
},
},
ignorePatterns: ['node_modules/', 'dist/', '.eslintrc.js', '*.d.ts'],
rules: {
'import/no-default-export': 'off',
'vue/multi-word-component-names': 'off',
'vue/no-multiple-template-root': 'off',
camelcase: 'off',
'no-console': 'off',
'no-bitwise': 'off',
'unicorn/filename-case': 'off',
'comma-dangle': ['error', 'only-multiline'],
'vue/no-v-html': 'off',
},
}

View File

@ -1,7 +0,0 @@
module.exports = {
root: true,
extends: ['custom/library'],
env: {
node: true,
},
}

View File

@ -0,0 +1,2 @@
import config from '@modrinth/tooling-config/eslint/nuxt.mjs'
export default config

View File

@ -14,8 +14,6 @@
"vue": "^3.5.13"
},
"devDependencies": {
"eslint": "^8.57.0",
"eslint-config-custom": "workspace:*",
"tsconfig": "workspace:*"
"@modrinth/tooling-config": "workspace:*"
}
}

View File

@ -1,10 +1,3 @@
{
"extends": "tsconfig/vue.json",
"include": [".", ".eslintrc.js"],
"exclude": ["dist", "build", "node_modules"],
"compilerOptions": {
"lib": ["esnext", "dom"],
"noImplicitAny": false
},
"types": ["@stripe/stripe-js"]
"extends": "@modrinth/tooling-config/typescript/vue.json"
}

View File

@ -0,0 +1,19 @@
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import prettierEslint from "eslint-plugin-prettier/recommended"
export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
prettierEslint,
{
languageOptions: {
parserOptions: {
warnOnUnsupportedTypeScriptVersion: false,
},
},
},
{
ignores: ['node_modules/', 'dist/', 'build/'],
},
);

View File

@ -0,0 +1,29 @@
import { createConfigForNuxt } from '@nuxt/eslint-config/flat'
import { fixupPluginRules } from '@eslint/compat'
import turboPlugin from 'eslint-plugin-turbo'
export const configurationNuxtToAppend = [
{
name: 'turbo',
plugins: {
turbo: fixupPluginRules(turboPlugin),
},
rules: {
'turbo/no-undeclared-env-vars': 'error',
},
},
{
name: 'modrinth',
rules: {
'vue/html-self-closing': 'off',
'vue/multi-word-component-names': 'off',
},
languageOptions: {
parserOptions: {
warnOnUnsupportedTypeScriptVersion: false,
},
},
},
];
export default createConfigForNuxt().append(configurationNuxtToAppend);

View File

@ -0,0 +1,34 @@
{
"name": "@modrinth/tooling-config",
"version": "0.0.0",
"private": true,
"description": "Unified tooling configuration for Modrinth monorepo",
"main": "./index.js",
"exports": {
"./eslint/*": "./eslint/*",
"./typescript/*": "./typescript/*",
"./prettier.config.js": "./prettier.config.js",
"./prettier.nuxt.config.js": "./prettier.nuxt.config.js"
},
"files": [
"eslint/",
"typescript/",
"prettier/",
"index.js"
],
"peerDependencies": {
"eslint": "^9.31.0",
"prettier": "^3.6.2",
"typescript": ">=5.0.0"
},
"devDependencies": {
"@eslint/js": "^9.32.0",
"@vue/tsconfig": "^0.7.0",
"eslint": "^9.32.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.3",
"eslint-plugin-vue": "^10.4.0",
"globals": "^16.3.0",
"typescript-eslint": "^8.38.0"
}
}

View File

@ -0,0 +1,12 @@
/**
* @see https://prettier.io/docs/configuration
* @type {import("prettier").Config}
*/
const config = {
printWidth: 100,
semi: false,
singleQuote: true,
endOfLine: 'auto'
};
module.exports = config;

View File

@ -0,0 +1,13 @@
/**
* @see https://prettier.io/docs/configuration
* @type {import("prettier").Config}
*/
const config = {
printWidth: 100,
semi: false,
singleQuote: true,
endOfLine: 'auto',
plugins: ["prettier-plugin-tailwindcss"]
};
module.exports = config;

View File

@ -0,0 +1,17 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"lib": ["esnext", "dom"],
"allowSyntheticDefaultImports": true
}
}

View File

@ -0,0 +1,9 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "@vue/tsconfig/tsconfig.dom.json",
"compilerOptions": {
"lib": ["ESNext", "DOM"],
"moduleResolution": "bundler",
"noImplicitAny": false
}
}

View File

@ -1,18 +0,0 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Default",
"compilerOptions": {
"composite": false,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"inlineSources": false,
"isolatedModules": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"preserveWatchOutput": true,
"skipLibCheck": true,
"strict": true,
"strictNullChecks": true
},
"exclude": ["node_modules"]
}

View File

@ -1,5 +0,0 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Nuxt",
"extends": ["./base.json"]
}

View File

@ -1,12 +0,0 @@
{
"name": "tsconfig",
"version": "0.0.0",
"private": true,
"license": "MIT",
"publishConfig": {
"access": "public"
},
"devDependencies": {
"@vue/tsconfig": "^0.5.1"
}
}

View File

@ -1,5 +0,0 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"display": "Vue",
"extends": ["./base.json", "@vue/tsconfig/tsconfig.dom.json"]
}

View File

@ -1,22 +1,2 @@
import { createConfigForNuxt } from '@nuxt/eslint-config/flat'
import { fixupPluginRules } from '@eslint/compat'
import turboPlugin from 'eslint-plugin-turbo'
export default createConfigForNuxt().append([
{
name: 'turbo',
plugins: {
turbo: fixupPluginRules(turboPlugin),
},
rules: {
'turbo/no-undeclared-env-vars': 'error',
},
},
{
name: 'modrinth',
rules: {
'vue/html-self-closing': 'off',
'vue/multi-word-component-names': 'off',
},
},
])
import config from '@modrinth/tooling-config/eslint/nuxt.mjs'
export default config

View File

@ -10,14 +10,12 @@
"intl:extract": "formatjs extract \"src/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore \"src/**/*.d.ts\" --out-file src/locales/en-US/index.json --preserve-whitespace"
},
"devDependencies": {
"@modrinth/tooling-config": "workspace:*",
"@formatjs/cli": "^6.2.12",
"@stripe/stripe-js": "^7.3.1",
"@vintl/unplugin": "^1.5.1",
"@vintl/vintl": "^4.4.1",
"eslint": "^8.57.0",
"eslint-config-custom": "workspace:*",
"stripe": "^18.1.1",
"tsconfig": "workspace:*",
"typescript": "^5.4.5",
"vue": "^3.5.13",
"vue-router": "4.3.0"

View File

@ -1,10 +1,3 @@
{
"extends": "tsconfig/vue.json",
"include": [".", ".eslintrc.js"],
"exclude": ["dist", "build", "node_modules"],
"compilerOptions": {
"lib": ["esnext", "dom"],
"noImplicitAny": false
},
"types": ["@stripe/stripe-js"]
"extends": "@modrinth/tooling-config/typescript/vue.json"
}

View File

@ -1,7 +0,0 @@
module.exports = {
root: true,
extends: ['custom/library'],
env: {
node: true,
},
}

View File

@ -0,0 +1,2 @@
import config from '@modrinth/tooling-config/eslint/nuxt.mjs'
export default config

View File

@ -9,9 +9,7 @@
"fix": "eslint . --fix && prettier --write ."
},
"devDependencies": {
"eslint": "^8.57.0",
"eslint-config-custom": "workspace:*",
"tsconfig": "workspace:*"
"@modrinth/tooling-config": "workspace:*"
},
"dependencies": {
"@codemirror/commands": "^6.3.2",

View File

@ -1,9 +1,3 @@
{
"extends": "tsconfig/base.json",
"include": [".", ".eslintrc.js"],
"exclude": ["dist", "build", "node_modules"],
"compilerOptions": {
"lib": ["esnext", "dom"],
"noImplicitAny": false
}
"extends": "@modrinth/tooling-config/typescript/vue.json"
}

1941
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff