From 46a629dfa7a22238f93544f7bd628b833ecd0a5e Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Sun, 26 Jan 2025 17:02:47 +0100 Subject: [PATCH] refactor!: reduce dependencies Upgrade chokidar to v4 --- package.json | 4 +++- pnpm-lock.yaml | 22 ++++++++++++++++++++-- src/core/RoutesFolderWatcher.ts | 27 +++++++++++++++++++++------ 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 67d249dae..1776a7ce7 100644 --- a/package.json +++ b/package.json @@ -136,11 +136,12 @@ "@rollup/pluginutils": "^5.1.4", "@vue-macros/common": "^1.16.1", "ast-walker-scope": "^0.6.2", - "chokidar": "^3.6.0", + "chokidar": "^4.0.3", "fast-glob": "^3.3.3", "json5": "^2.2.3", "local-pkg": "^1.0.0", "magic-string": "^0.30.17", + "micromatch": "^4.0.8", "mlly": "^1.7.4", "pathe": "^2.0.2", "scule": "^1.3.0", @@ -160,6 +161,7 @@ "@posva/prompts": "^2.4.4", "@shikijs/vitepress-twoslash": "2.1.0", "@tanstack/vue-query": "^5.64.2", + "@types/micromatch": "^4.0.9", "@types/node": "^22.10.10", "@vitest/coverage-v8": "^3.0.4", "@vitest/ui": "^3.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abc1d42bc..579b60fe9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ importers: specifier: ^0.6.2 version: 0.6.2 chokidar: - specifier: ^3.6.0 - version: 3.6.0 + specifier: ^4.0.3 + version: 4.0.3 fast-glob: specifier: ^3.3.3 version: 3.3.3 @@ -35,6 +35,9 @@ importers: magic-string: specifier: ^0.30.17 version: 0.30.17 + micromatch: + specifier: ^4.0.8 + version: 4.0.8 mlly: specifier: ^1.7.4 version: 1.7.4 @@ -63,6 +66,9 @@ importers: '@tanstack/vue-query': specifier: ^5.64.2 version: 5.64.2(vue@3.5.13(typescript@5.7.3)) + '@types/micromatch': + specifier: ^4.0.9 + version: 4.0.9 '@types/node': specifier: ^22.10.10 version: 22.10.10 @@ -1523,6 +1529,9 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + '@types/braces@3.0.5': + resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -1556,6 +1565,9 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/micromatch@4.0.9': + resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==} + '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -7090,6 +7102,8 @@ snapshots: '@trysound/sax@0.2.0': {} + '@types/braces@3.0.5': {} + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -7129,6 +7143,10 @@ snapshots: '@types/mdurl@2.0.0': {} + '@types/micromatch@4.0.9': + dependencies: + '@types/braces': 3.0.5 + '@types/ms@2.1.0': {} '@types/node@22.10.10': diff --git a/src/core/RoutesFolderWatcher.ts b/src/core/RoutesFolderWatcher.ts index df822cc21..7028a49dc 100644 --- a/src/core/RoutesFolderWatcher.ts +++ b/src/core/RoutesFolderWatcher.ts @@ -1,4 +1,5 @@ -import chokidar from 'chokidar' +import { type FSWatcher, watch as fsWatch } from 'chokidar' +import micromatch from 'micromatch' import { resolve } from 'pathe' import { ResolvedOptions, @@ -17,7 +18,7 @@ export class RoutesFolderWatcher { filePatterns: string[] exclude: string[] - watcher: chokidar.FSWatcher + watcher: FSWatcher constructor(folderOptions: RoutesFolderOptionResolved) { this.src = folderOptions.src @@ -25,15 +26,29 @@ export class RoutesFolderWatcher { this.exclude = folderOptions.exclude this.extensions = folderOptions.extensions this.filePatterns = folderOptions.filePatterns + console.log( + '🚀 ~ file: RoutesFolderWatcher.ts ~ line 86 ~ RoutesFolderWatcher ~ constructor ~ this.filePatterns', + this.filePatterns + ) - this.watcher = chokidar.watch(folderOptions.pattern, { + this.watcher = fsWatch('.', { cwd: this.src, ignoreInitial: true, - // disableGlobbing: true, ignorePermissionErrors: true, - ignored: this.exclude, + ignored: (filepath, stats) => { + // let folders pass, they are ignored by the glob pattern + if (stats?.isDirectory()) { + return false + } + + const isMatch = micromatch.isMatch(filepath, this.filePatterns, { + cwd: this.src, + ignore: this.exclude, + }) + + return !isMatch + }, - // useFsEvents: true, // TODO: allow user options }) }