Add ESLint configuration and scripts

Add ESLint to the project with TypeScript support and update npm scripts to include linting in the build process.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
j2masamitu 2025-11-18 09:36:00 +09:00
parent cc496d0fd7
commit b2437d4673
2 changed files with 67 additions and 4 deletions

57
eslint.config.mjs Normal file
View file

@ -0,0 +1,57 @@
import tseslint from "typescript-eslint";
import obsidianmd from "eslint-plugin-obsidianmd";
export default tseslint.config(
{
files: ["**/*.ts"],
plugins: {
obsidianmd,
},
languageOptions: {
parser: tseslint.parser,
parserOptions: {
project: true,
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
// Obsidian plugin rules only (what the bot actually checks)
"obsidianmd/commands/no-command-in-command-id": "error",
"obsidianmd/commands/no-command-in-command-name": "error",
"obsidianmd/commands/no-default-hotkeys": "error",
"obsidianmd/commands/no-plugin-id-in-command-id": "error",
"obsidianmd/commands/no-plugin-name-in-command-name": "error",
"obsidianmd/settings-tab/no-manual-html-headings": "error",
"obsidianmd/settings-tab/no-problematic-settings-headings": "error",
"obsidianmd/vault/iterate": "error",
"obsidianmd/detach-leaves": "error",
"obsidianmd/hardcoded-config-path": "error",
"obsidianmd/no-forbidden-elements": "error",
"obsidianmd/no-plugin-as-component": "error",
"obsidianmd/no-sample-code": "error",
"obsidianmd/no-tfile-tfolder-cast": "error",
"obsidianmd/no-view-references-in-plugin": "error",
"obsidianmd/no-static-styles-assignment": "error",
"obsidianmd/object-assign": "error",
"obsidianmd/platform": "error",
"obsidianmd/prefer-file-manager-trash-file": "warn",
"obsidianmd/prefer-abstract-input-suggest": "error",
"obsidianmd/regex-lookbehind": "error",
"obsidianmd/sample-names": "error",
"obsidianmd/validate-manifest": "error",
"obsidianmd/validate-license": "error",
"obsidianmd/ui/sentence-case": ["error", { enforceCamelCaseLower: true }],
},
},
{
ignores: [
"main.js",
"node_modules/**",
".obsidian/**",
"*.config.mjs",
"*.config.js",
"**/*.min.js",
"goboard-publisher/**",
],
}
);

View file

@ -5,8 +5,11 @@
"main": "main.js",
"scripts": {
"dev": "node esbuild.config.mjs",
"build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production",
"version": "node version-bump.mjs && git add manifest.json versions.json"
"build": "npm run lint && tsc -noEmit -skipLibCheck && node esbuild.config.mjs production",
"version": "node version-bump.mjs && git add manifest.json versions.json",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"precommit": "npm run lint"
},
"keywords": [
"obsidian",
@ -37,13 +40,16 @@
"@typescript-eslint/parser": "^5.29.0",
"builtin-modules": "^3.3.0",
"esbuild": "0.17.3",
"eslint": "^9.39.1",
"obsidian": "latest",
"tslib": "2.4.0",
"typescript": "4.7.4"
"typescript": "4.7.4",
"typescript-eslint": "^8.46.4"
},
"dependencies": {
"@sabaki/shudan": "^1.7.1",
"@sabaki/sgf": "^3.4.5",
"@sabaki/shudan": "^1.7.1",
"eslint-plugin-obsidianmd": "file:../../../../private/tmp/eslint-plugin-obsidianmd",
"preact": "^10.19.3"
}
}