obsidian-plugin-config 1.3.10 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -90,6 +90,14 @@
90
90
  "presentation": { "reveal": "always", "panel": "shared" },
91
91
  "problemMatcher": []
92
92
  },
93
+ {
94
+ "label": "Upgrade All (yarn upgrade + sync templates)",
95
+ "type": "shell",
96
+ "command": "yarn upgrade-all",
97
+ "group": "build",
98
+ "presentation": { "reveal": "always", "panel": "shared" },
99
+ "problemMatcher": []
100
+ },
93
101
  {
94
102
  "label": "NPM Publish",
95
103
  "type": "shell",
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * Obsidian Plugin Config - CLI Entry Point
5
5
  * Global command: obsidian-inject
6
- * Version: 1.3.10
6
+ * Version: 1.4.0
7
7
  */
8
8
 
9
9
  import { execSync } from 'child_process';
@@ -0,0 +1,111 @@
1
+ # LLM Guide — obsidian-plugin-config
2
+
3
+ ## The two distinct roles of this repo
4
+
5
+ ### 1. Local plugin (root)
6
+
7
+ The root of this repo functions as a **local Obsidian plugin** for development and testing purposes.
8
+
9
+ - `src/` — reusable code (modals, utils, helpers) that can be tested locally and exported via NPM
10
+ - `scripts/` — local build/dev scripts for this repo itself (includes `build-npm.ts` for NPM publishing)
11
+ - `package.json` (root) — configuration for this local plugin + NPM package
12
+ - `tsconfig.json` (root) — TypeScript config for this local plugin
13
+ - `eslint.config.mts` (root) — ESLint config for this local plugin
14
+
15
+ Exports from `src/` are available as snippets via the NPM package `obsidian-plugin-config`.
16
+
17
+ ### 2. Injection system (templates/)
18
+
19
+ `templates/` is the **source of truth** for everything injected into target plugins.
20
+
21
+ - `templates/scripts/` — scripts that will be copied into `<target>/scripts/`
22
+ - `templates/package.json` — base deps/scripts merged into `<target>/package.json`
23
+ - `templates/package-sass.json` — additional deps merged when `--sass` flag is used
24
+ - `templates/tsconfig.json` — TypeScript config injected as `<target>/tsconfig.json`
25
+ - `templates/eslint.config.mts` — ESLint config injected into target
26
+ - `templates/.editorconfig`, `templates/.prettierrc`, etc. — config files injected into target
27
+ - `templates/help-plugin.ts` — help script injected as `<target>/scripts/help.ts`
28
+
29
+ The injection logic lives in `scripts/inject-core.ts`, `scripts/inject-path.ts`, `scripts/inject-prompt.ts`.
30
+
31
+ ---
32
+
33
+ ## Critical distinction
34
+
35
+ | | Root | templates/ |
36
+ |---|---|---|
37
+ | Purpose | Local dev + NPM exports | Source for injection |
38
+ | package.json | This repo's own config | Base for target plugins |
39
+ | tsconfig.json | This repo's TS config | Injected into targets |
40
+ | scripts/ | Local scripts (+ build-npm) | Copied into targets |
41
+
42
+ **Never modify root config files thinking it will affect injected plugins. Always modify `templates/`.**
43
+
44
+ **Never read root `package.json` or `tsconfig.json` as a reference for what gets injected.**
45
+
46
+ ---
47
+
48
+ ## What injection does
49
+
50
+ `inject-core.ts → updatePackageJson()` reads `templates/package.json` (and `templates/package-sass.json` if `--sass`) and merges into the target plugin's `package.json`:
51
+ - All `scripts` are overwritten with template values
52
+ - All `devDependencies` from template are added/updated
53
+ - `engines` and `type` are set from template
54
+ - Target plugin's own specific deps are preserved
55
+
56
+ `inject-core.ts → injectScripts()` copies files from `templates/` into the target:
57
+ - `templates/scripts/*` → `<target>/scripts/`
58
+ - `templates/tsconfig.json` → `<target>/tsconfig.json`
59
+ - `templates/eslint.config.mts` → `<target>/eslint.config.mts`
60
+ - `templates/.editorconfig`, `.prettierrc`, `.npmrc`, `.env` → `<target>/`
61
+ - `templates/.github/workflows/*` → `<target>/.github/workflows/`
62
+
63
+ ---
64
+
65
+ ## Scripts: local vs injected
66
+
67
+ Local scripts (`scripts/`) and template scripts (`templates/scripts/`) are **the same scripts**, with one difference:
68
+
69
+ - `scripts/` has extra files: `inject-core.ts`, `inject-path.ts`, `inject-prompt.ts`, `build-npm.ts`, `update-exports.js`, `update-version-config.ts`
70
+ - `templates/scripts/` has only what target plugins need: `esbuild.config.ts`, `acp.ts`, `update-version.ts`, `release.ts`, `utils.ts`, `help.ts`
71
+
72
+ When updating a shared script (e.g. `acp.ts`), update **both** `scripts/acp.ts` and `templates/scripts/acp.ts`.
73
+
74
+ ---
75
+
76
+ ## What NOT to do
77
+
78
+ - ❌ Do not add `obsidian-plugin-config` as a dependency in `templates/package.json` — injected plugins are standalone
79
+ - ❌ Do not use `../obsidian-plugin-config/scripts/...` paths anywhere — that was the old sibling-repo approach, fully removed
80
+ - ❌ Do not hardcode deps/scripts in `inject-core.ts` — they must come from `templates/package.json`
81
+ - ❌ Do not modify root `tsconfig.json` or `package.json` to fix issues in injected plugins — fix `templates/` instead
82
+ - ❌ Do not run `yarn upgrade` on root and expect it to update what gets injected — versions are defined in `templates/package.json`
83
+
84
+ ---
85
+
86
+ ## obsidian-typings paths (current)
87
+
88
+ The correct paths for `obsidian-typings` in `tsconfig.json` (confirmed against installed `node_modules`):
89
+
90
+ ```json
91
+ "types": ["obsidian-typings"],
92
+ "paths": {
93
+ "obsidian-typings/implementations": [
94
+ "./node_modules/obsidian-typings/dist/cjs/implementations.d.cts",
95
+ "./node_modules/obsidian-typings/dist/esm/implementations.mjs"
96
+ ]
97
+ }
98
+ ```
99
+
100
+ These paths are in `templates/tsconfig.json` and must stay in sync with the actual `obsidian-typings` package structure.
101
+
102
+ ---
103
+
104
+ ## docs/ folder
105
+
106
+ - `docs/package-ex.json` — example of a real working injected plugin's `package.json` (reference only)
107
+ - `docs/tsconfig-ex.json` — example of a real working injected plugin's `tsconfig.json` (reference only)
108
+ - `docs/package-versions.json` — archive (reference only, source of truth is `templates/package.json`)
109
+ - `docs/package-versions-sass.json` — archive (reference only, source of truth is `templates/package-sass.json`)
110
+ - `docs/IMPROVEMENT-PLAN-FOR-LLM.md` — historical task list (may be outdated)
111
+ - `docs/LLM-GUIDE.md` — this file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-plugin-config",
3
- "version": "1.3.10",
3
+ "version": "1.4.0",
4
4
  "description": "Système d'injection pour plugins Obsidian autonomes",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -36,7 +36,8 @@
36
36
  "inject-prompt": "tsx scripts/inject-prompt.ts",
37
37
  "inject": "tsx scripts/inject-prompt.ts",
38
38
  "check-plugin": "tsx scripts/inject-path.ts --dry-run",
39
- "build-npm": "tsx scripts/build-npm.ts",
39
+ "sync-template-deps": "tsx scripts/sync-template-deps.ts",
40
+ "upgrade-all": "yarn upgrade && tsx scripts/sync-template-deps.ts",
40
41
  "npm-publish": "tsx scripts/build-npm.ts",
41
42
  "help": "tsx scripts/help.ts",
42
43
  "h": "tsx scripts/help.ts"
@@ -59,7 +60,7 @@
59
60
  "fs-extra": "^11.2.0",
60
61
  "jiti": "latest",
61
62
  "obsidian": "*",
62
- "obsidian-typings": "^3.9.5",
63
+ "obsidian-typings": "latest",
63
64
  "prettier": "^3.4.0",
64
65
  "semver": "^7.7.2",
65
66
  "tsx": "^4.19.4",
@@ -76,7 +77,7 @@
76
77
  "fs-extra": "^11.2.0",
77
78
  "lodash": "^4.17.21",
78
79
  "obsidian": "*",
79
- "obsidian-typings": "^3.9.5",
80
+ "obsidian-typings": "latest",
80
81
  "semver": "^7.7.2",
81
82
  "tsx": "^4.19.4",
82
83
  "typescript": "^5.8.2"
@@ -204,6 +204,18 @@ function buildAndPublishNpm(): void {
204
204
  );
205
205
 
206
206
  try {
207
+ // Step 0: Check NPM login
208
+ console.log(`🔐 Checking NPM authentication...`);
209
+ try {
210
+ const whoami = execSync('npm whoami --registry https://registry.npmjs.org/', {
211
+ stdio: 'pipe', encoding: 'utf8'
212
+ }).trim();
213
+ console.log(` ✅ Logged in as: ${whoami}\n`);
214
+ } catch {
215
+ console.error(` ❌ Not logged in to NPM. Run: npm login`);
216
+ process.exit(1);
217
+ }
218
+
207
219
  // Step 1: Update version in package.json only
208
220
  // (no commit yet - we'll do one big commit after)
209
221
  console.log(`📋 Step 1/6: Updating version...`);
@@ -212,21 +224,21 @@ function buildAndPublishNpm(): void {
212
224
  });
213
225
 
214
226
  // Step 2: Update exports automatically
215
- console.log(`\n📦 Step 2/6: Updating exports...`);
227
+ console.log(`\n📦 Step 2/7: Updating exports...`);
216
228
  execSync('yarn update-exports', { stdio: 'inherit' });
217
229
 
218
230
  // Step 3: Generate bin file (uses updated version)
219
- console.log(`\n🔧 Step 3/6: Generating bin/obsidian-inject.js...`);
231
+ console.log(`\n🔧 Step 3/7: Generating bin/obsidian-inject.js...`);
220
232
  generateBinFile();
221
233
 
222
234
  // Step 4: Verify package and sync versions.json
223
235
  // (must happen before commit so versions.json is included)
224
- console.log(`\n📋 Step 4/6: Verifying package...`);
236
+ console.log(`\n📋 Step 4/7: Verifying package...`);
225
237
  verifyPackage();
226
238
 
227
239
  // Step 5: Commit and push ALL changes together
228
240
  // (package.json version, bin/, versions.json, exports)
229
- console.log(`\n📤 Step 5/6: Committing and pushing changes...`);
241
+ console.log(`\n📤 Step 5/7: Committing and pushing changes...`);
230
242
  try {
231
243
  execSync(
232
244
  'echo "Publish NPM package" | tsx scripts/acp.ts -b',
@@ -237,7 +249,7 @@ function buildAndPublishNpm(): void {
237
249
  }
238
250
 
239
251
  // Step 6: Publish to NPM
240
- console.log(`\n📤 Step 6/6: Publishing to NPM...`);
252
+ console.log(`\n📤 Step 6/7: Publishing to NPM...`);
241
253
  execSync(
242
254
  'npm publish --registry https://registry.npmjs.org/',
243
255
  { stdio: 'inherit' }
package/scripts/help.ts CHANGED
@@ -55,21 +55,27 @@ After adding a new module to src/, run:
55
55
 
56
56
  🏗️ ARCHITECTURE
57
57
 
58
+ TWO DISTINCT ROLES:
59
+ Root (src/, scripts/) # Local plugin + NPM snippet exports
60
+ templates/ # Source of truth for injection
61
+
62
+ templates/ → what gets injected:
63
+ templates/package.json # Base deps/scripts for target plugins
64
+ templates/package-sass.json # Extra deps when --sass is used
65
+ templates/tsconfig.json # TypeScript config for target plugins
66
+ templates/scripts/* # Scripts copied to <target>/scripts/
67
+ templates/eslint.config.mts # ESLint config for target plugins
68
+
58
69
  inject-core.ts — shared injection logic:
59
- analyzePlugin() # Analyze target plugin directory
70
+ updatePackageJson() # Reads templates/package.json (not hardcoded)
71
+ injectScripts() # Copies templates/ files to target
60
72
  performInjection() # Main orchestration function
61
- updatePackageJson() # Inject scripts + dependencies
62
- injectScripts() # Copy templates to target
63
- ensurePluginConfigClean() # Auto-commit before injection
64
73
 
65
74
  inject-path.ts — CLI entry point:
66
75
  Parses --yes, --dry-run, --sass flags
67
- Calls performInjection() from inject-core
68
76
 
69
77
  inject-prompt.ts — interactive entry point:
70
78
  Prompts for target path interactively
71
- Supports --sass flag
72
- Calls performInjection() from inject-core
73
79
 
74
80
  ═══════════════════════════════════════════════════════════════════
75
81
 
@@ -229,6 +229,15 @@ export async function cleanOldScripts(scriptsPath: string): Promise<void> {
229
229
  }
230
230
  }
231
231
 
232
+ const obsoleteRootFiles = ["help-plugin.ts"];
233
+ for (const fileName of obsoleteRootFiles) {
234
+ const filePath = path.join(path.dirname(scriptsPath), fileName);
235
+ if (await isValidPath(filePath)) {
236
+ fs.unlinkSync(filePath);
237
+ console.log(`🗑️ Removed obsolete root file: ${fileName}`);
238
+ }
239
+ }
240
+
232
241
  const obsoleteFiles = ["start.mjs", "start.js"];
233
242
  for (const fileName of obsoleteFiles) {
234
243
  const filePath = path.join(scriptsPath, fileName);
@@ -449,6 +458,18 @@ export async function updatePackageJson(
449
458
  try {
450
459
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
451
460
 
461
+ const configRoot = findPluginConfigRoot();
462
+ const templatePkg = JSON.parse(
463
+ fs.readFileSync(path.join(configRoot, "templates/package.json"), "utf8")
464
+ );
465
+
466
+ if (useSass) {
467
+ const sassPkg = JSON.parse(
468
+ fs.readFileSync(path.join(configRoot, "templates/package-sass.json"), "utf8")
469
+ );
470
+ Object.assign(templatePkg.devDependencies, sassPkg.devDependencies);
471
+ }
472
+
452
473
  const obsoleteScripts = ["version"];
453
474
  for (const script of obsoleteScripts) {
454
475
  if (packageJson.scripts?.[script]) {
@@ -459,20 +480,7 @@ export async function updatePackageJson(
459
480
 
460
481
  packageJson.scripts = {
461
482
  ...packageJson.scripts,
462
- start: "yarn install && yarn dev",
463
- dev: "tsx scripts/esbuild.config.ts",
464
- build: "tsc -noEmit -skipLibCheck && tsx scripts/esbuild.config.ts production",
465
- real: "tsx scripts/esbuild.config.ts production real",
466
- acp: "tsx scripts/acp.ts",
467
- bacp: "tsx scripts/acp.ts -b",
468
- "update-version": "tsx scripts/update-version.ts",
469
- v: "tsx scripts/update-version.ts",
470
- release: "tsx scripts/release.ts",
471
- r: "tsx scripts/release.ts",
472
- help: "tsx scripts/help.ts",
473
- h: "tsx scripts/help.ts",
474
- lint: "eslint . --ext .ts",
475
- "lint:fix": "eslint . --ext .ts --fix"
483
+ ...templatePkg.scripts
476
484
  };
477
485
 
478
486
  if (packageJson.dependencies?.["obsidian-plugin-config"]) {
@@ -482,44 +490,24 @@ export async function updatePackageJson(
482
490
 
483
491
  if (!packageJson.devDependencies) packageJson.devDependencies = {};
484
492
 
485
- const requiredDeps: Record<string, string> = {
486
- "@types/eslint": "latest",
487
- "@types/node": "^22.15.26",
488
- "@types/semver": "^7.7.0",
489
- "@typescript-eslint/eslint-plugin": "latest",
490
- "@typescript-eslint/parser": "latest",
491
- "builtin-modules": "3.3.0",
492
- dedent: "^1.6.0",
493
- dotenv: "^16.4.5",
494
- esbuild: "latest",
495
- eslint: "latest",
496
- "eslint-import-resolver-typescript": "latest",
497
- jiti: "latest",
498
- obsidian: "*",
499
- "obsidian-typings": "^3.9.5",
500
- prettier: "^3.4.0",
501
- semver: "^7.7.2",
502
- tsx: "^4.19.4",
503
- typescript: "^5.8.2",
504
- ...(useSass ? { "esbuild-sass-plugin": "^3.3.1" } : {})
505
- };
493
+ const requiredDeps: Record<string, string> = templatePkg.devDependencies;
506
494
 
507
495
  let addedDeps = 0;
508
496
  let updatedDeps = 0;
509
497
  for (const [dep, version] of Object.entries(requiredDeps)) {
510
498
  if (!packageJson.devDependencies[dep]) {
511
- packageJson.devDependencies[dep] = version;
499
+ packageJson.devDependencies[dep] = version as string;
512
500
  addedDeps++;
513
501
  } else if (packageJson.devDependencies[dep] !== version) {
514
- packageJson.devDependencies[dep] = version;
502
+ packageJson.devDependencies[dep] = version as string;
515
503
  updatedDeps++;
516
504
  }
517
505
  }
518
506
 
519
507
  if (!packageJson.engines) packageJson.engines = {};
520
- packageJson.engines.npm = "please-use-yarn";
521
- packageJson.engines.yarn = ">=1.22.0";
522
- packageJson.type = "module";
508
+ packageJson.engines.npm = templatePkg.engines.npm;
509
+ packageJson.engines.yarn = templatePkg.engines.yarn;
510
+ packageJson.type = templatePkg.type;
523
511
 
524
512
  fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), "utf8");
525
513
  console.log(` ✅ Updated package.json (${addedDeps} new, ${updatedDeps} updated dependencies)`);
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env tsx
2
+
3
+ import fs from "fs";
4
+ import path from "path";
5
+
6
+ const TEMPLATES_PKG = "templates/package.json";
7
+ const TEMPLATES_SASS = "templates/package-sass.json";
8
+
9
+ function resolvedVersion(dep: string): string | null {
10
+ const pkgPath = path.join("node_modules", dep, "package.json");
11
+ if (!fs.existsSync(pkgPath)) return null;
12
+ try {
13
+ return JSON.parse(fs.readFileSync(pkgPath, "utf8")).version as string;
14
+ } catch {
15
+ return null;
16
+ }
17
+ }
18
+
19
+ function updateDeps(deps: Record<string, string>): { updated: string[] } {
20
+ const updated: string[] = [];
21
+
22
+ for (const dep of Object.keys(deps)) {
23
+ const current = deps[dep];
24
+ // Skip wildcards like "*"
25
+ if (current === "*") continue;
26
+
27
+ const resolved = resolvedVersion(dep);
28
+ if (!resolved) continue;
29
+
30
+ // Keep "latest" as-is, update pinned/range versions
31
+ if (current !== "latest") {
32
+ const newVersion = `^${resolved}`;
33
+ if (deps[dep] !== newVersion) {
34
+ deps[dep] = newVersion;
35
+ updated.push(`${dep}: ${current} → ${newVersion}`);
36
+ }
37
+ }
38
+ }
39
+
40
+ return { updated };
41
+ }
42
+
43
+ function syncFile(filePath: string): void {
44
+ const pkg = JSON.parse(fs.readFileSync(filePath, "utf8"));
45
+ const { updated } = updateDeps(pkg.devDependencies ?? {});
46
+
47
+ if (updated.length) {
48
+ fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2) + "\n", "utf8");
49
+ console.log(`\n✅ ${filePath}`);
50
+ for (const u of updated) console.log(` ${u}`);
51
+ } else {
52
+ console.log(`\n✅ ${filePath} — already up to date`);
53
+ }
54
+ }
55
+
56
+ console.log("🔄 Syncing template deps from node_modules...");
57
+ syncFile(TEMPLATES_PKG);
58
+ syncFile(TEMPLATES_SASS);
59
+ console.log("\n✅ Done.");
@@ -7,4 +7,8 @@ end_of_line = lf
7
7
  insert_final_newline = true
8
8
  indent_style = tab
9
9
  indent_size = 4
10
- tab_width = 4
10
+ tab_width = 4
11
+
12
+ [*.json]
13
+ indent_style = space
14
+ indent_size = 2
@@ -0,0 +1,5 @@
1
+ {
2
+ "devDependencies": {
3
+ "esbuild-sass-plugin": "latest"
4
+ }
5
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "type": "module",
3
+ "engines": {
4
+ "npm": "please-use-yarn",
5
+ "yarn": ">=1.22.0"
6
+ },
7
+ "scripts": {
8
+ "start": "yarn install && yarn dev",
9
+ "dev": "tsx scripts/esbuild.config.ts",
10
+ "build": "tsc -noEmit -skipLibCheck && tsx scripts/esbuild.config.ts production",
11
+ "real": "tsx scripts/esbuild.config.ts production real",
12
+ "acp": "tsx scripts/acp.ts",
13
+ "bacp": "tsx scripts/acp.ts -b",
14
+ "update-version": "tsx scripts/update-version.ts",
15
+ "v": "tsx scripts/update-version.ts",
16
+ "release": "tsx scripts/release.ts",
17
+ "r": "tsx scripts/release.ts",
18
+ "help": "tsx scripts/help.ts",
19
+ "h": "tsx scripts/help.ts",
20
+ "lint": "eslint . --ext .ts",
21
+ "lint:fix": "eslint . --ext .ts --fix"
22
+ },
23
+ "devDependencies": {
24
+ "@types/eslint": "latest",
25
+ "@types/node": "latest",
26
+ "@types/semver": "latest",
27
+ "@typescript-eslint/eslint-plugin": "latest",
28
+ "@typescript-eslint/parser": "latest",
29
+ "builtin-modules": "latest",
30
+ "dedent": "latest",
31
+ "dotenv": "latest",
32
+ "esbuild": "latest",
33
+ "eslint": "latest",
34
+ "eslint-import-resolver-typescript": "latest",
35
+ "jiti": "latest",
36
+ "obsidian": "*",
37
+ "obsidian-typings": "latest",
38
+ "prettier": "latest",
39
+ "semver": "latest",
40
+ "tsx": "latest",
41
+ "typescript": "latest"
42
+ }
43
+ }
@@ -1,8 +1,7 @@
1
1
  #!/usr/bin/env tsx
2
2
 
3
3
  console.log(`
4
- 🎯 Obsidian Plugin - Quick Help
5
- Available commands in this autonomous plugin
4
+ 🎯 Obsidian Plugin Commands
6
5
 
7
6
  ═══════════════════════════════════════════════════════════════════
8
7
 
@@ -13,7 +12,7 @@ DEVELOPMENT:
13
12
  yarn dev # Build dev mode with hot reload
14
13
  yarn build # Build production
15
14
  yarn real # Build + install in real vault
16
- yarn lint, lint:fix # ESLint verification/correction
15
+ yarn lint, lint:fix # ESLint check/fix
17
16
 
18
17
  VERSION & RELEASE:
19
18
  yarn v, update-version # Update version (package.json + manifest.json)
@@ -39,13 +38,13 @@ GIT OPERATIONS:
39
38
  ⚙️ CONFIGURATION
40
39
 
41
40
  ENVIRONMENT:
42
- - Edit .env to define TEST_VAULT and REAL_VAULT
43
- - Autonomous scripts (no external dependencies)
41
+ - Edit .env to set TEST_VAULT and REAL_VAULT
42
+ - Standalone scripts (no external dependencies)
44
43
  - Automatic Git sync verification before push
45
44
 
46
- AUTONOMOUS PLUGIN:
45
+ STANDALONE PLUGIN:
47
46
  ✅ Independent local scripts
48
- Integrated TypeScript and ESLint configuration
47
+ Built-in TypeScript and ESLint configuration
49
48
  ✅ GitHub Actions workflows with Yarn
50
49
  ✅ No dependency on obsidian-plugin-config
51
50
  `);
@@ -1,41 +1,30 @@
1
1
  {
2
- "compilerOptions": {
3
- "types": [
4
- "obsidian-typings"
5
- ],
6
- "paths": {
7
- "obsidian-typings/implementations": [
8
- "./node_modules/obsidian-typings/dist/implementations.d.ts",
9
- "./node_modules/obsidian-typings/dist/implementations.cjs"
10
- ]
11
- },
12
- "inlineSourceMap": true,
13
- "inlineSources": true,
14
- "module": "NodeNext",
15
- "moduleResolution": "NodeNext",
16
- "target": "ES2021",
17
- "allowJs": true,
18
- "noImplicitAny": true,
19
- "importHelpers": true,
20
- "isolatedModules": true,
21
- "allowImportingTsExtensions": true,
22
- "noEmit": true,
23
- "allowSyntheticDefaultImports": true,
24
- "verbatimModuleSyntax": true,
25
- "forceConsistentCasingInFileNames": true,
26
- "strictNullChecks": true,
27
- "resolveJsonModule": true,
28
- "lib": [
29
- "DOM",
30
- "ES2021"
31
- ]
32
- },
33
- "include": [
34
- "./src/**/*.ts",
35
- "./scripts/**/*.ts"
36
- ],
37
- "exclude": [
38
- "node_modules",
39
- "eslint.config.ts"
40
- ]
41
- }
2
+ "compilerOptions": {
3
+ "types": ["obsidian-typings"],
4
+ "paths": {
5
+ "obsidian-typings/implementations": [
6
+ "./node_modules/obsidian-typings/dist/cjs/implementations.d.cts",
7
+ "./node_modules/obsidian-typings/dist/esm/implementations.mjs"
8
+ ]
9
+ },
10
+ "module": "NodeNext",
11
+ "moduleResolution": "NodeNext",
12
+ "target": "ES2021",
13
+ "inlineSourceMap": true,
14
+ "inlineSources": true,
15
+ "allowJs": true,
16
+ "noImplicitAny": true,
17
+ "importHelpers": true,
18
+ "isolatedModules": true,
19
+ "allowImportingTsExtensions": true,
20
+ "noEmit": true,
21
+ "allowSyntheticDefaultImports": true,
22
+ "verbatimModuleSyntax": true,
23
+ "forceConsistentCasingInFileNames": true,
24
+ "strictNullChecks": true,
25
+ "resolveJsonModule": true,
26
+ "lib": ["DOM", "ES2021"]
27
+ },
28
+ "include": ["./src/**/*.ts", "./scripts/**/*.ts"],
29
+ "exclude": ["node_modules", "eslint.config.ts"]
30
+ }
package/versions.json CHANGED
@@ -36,5 +36,8 @@
36
36
  "1.3.7": "1.8.9",
37
37
  "1.3.8": "1.8.9",
38
38
  "1.3.9": "1.8.9",
39
- "1.3.10": "1.8.9"
39
+ "1.3.10": "1.8.9",
40
+ "1.3.11": "1.8.9",
41
+ "1.3.12": "1.8.9",
42
+ "1.4.0": "1.8.9"
40
43
  }
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env tsx
2
-
3
- console.log(`
4
- 🎯 Obsidian Plugin - Quick Help
5
- Available commands in this standalone plugin
6
-
7
- ═══════════════════════════════════════════════════════════════════
8
-
9
- 📋 MAIN COMMANDS
10
-
11
- DEVELOPMENT:
12
- yarn start # Install dependencies + start dev
13
- yarn dev # Build dev mode with hot reload
14
- yarn build # Build production
15
- yarn real # Build + install in real vault
16
- yarn lint, lint:fix # ESLint check/fix
17
-
18
- VERSION & RELEASE:
19
- yarn v, update-version # Update version (package.json + manifest.json)
20
- yarn release, r # Create GitHub release with tag
21
-
22
- GIT OPERATIONS:
23
- yarn acp # Add, commit, push (with Git sync)
24
- yarn bacp # Build + add, commit, push
25
- yarn run help, h # This help
26
-
27
- ═══════════════════════════════════════════════════════════════════
28
-
29
- 🚀 TYPICAL WORKFLOW
30
-
31
- 1. yarn start # Initial setup
32
- 2. yarn dev # Daily development
33
- 3. yarn build # Test production build
34
- 4. yarn v # Update version
35
- 5. yarn release # Publish GitHub release
36
-
37
- ═══════════════════════════════════════════════════════════════════
38
-
39
- ⚙️ CONFIGURATION
40
-
41
- ENVIRONMENT:
42
- - Edit .env to set TEST_VAULT and REAL_VAULT
43
- - Standalone scripts (no external dependencies)
44
- - Automatic Git sync verification before push
45
-
46
- STANDALONE PLUGIN:
47
- ✅ Independent local scripts
48
- ✅ Built-in TypeScript and ESLint configuration
49
- ✅ GitHub Actions workflows with Yarn
50
- ✅ No dependency on obsidian-plugin-config
51
- `);