Refactor file watcher to support .gitignore and ignore node_modules
This commit is contained in:
27
main.js
27
main.js
@@ -678,9 +678,32 @@ function ensureInGitignore(folderPath, name) {
|
|||||||
|
|
||||||
function startMonitoringWatcher(folderPath, win) {
|
function startMonitoringWatcher(folderPath, win) {
|
||||||
if (monitoringWatchers.has(folderPath)) return;
|
if (monitoringWatchers.has(folderPath)) return;
|
||||||
|
|
||||||
|
// 1. Load .gitignore (and add default rules for .git, node_modules, etc.)
|
||||||
|
const ig = ignore();
|
||||||
|
const gitignorePath = path.join(folderPath, '.gitignore');
|
||||||
|
if (fs.existsSync(gitignorePath)) {
|
||||||
|
ig.add(fs.readFileSync(gitignorePath, 'utf-8'));
|
||||||
|
}
|
||||||
|
// Always ignore .git and node_modules just in case (safety net)
|
||||||
|
ig.add(['.git', 'node_modules']);
|
||||||
|
|
||||||
|
// 2. Function for chokidar
|
||||||
|
function ignoredFunc(absPath) {
|
||||||
|
// Chokidar gives us absolute path; convert to relative to repo root
|
||||||
|
const rel = path.relative(folderPath, absPath);
|
||||||
|
// Always ignore the root .git folder
|
||||||
|
if (rel === '.git' || rel.startsWith('.git' + path.sep)) return true;
|
||||||
|
// Same for node_modules
|
||||||
|
if (rel === 'node_modules' || rel.startsWith('node_modules' + path.sep)) return true;
|
||||||
|
// .gitignore logic (note: '' means root, which is never ignored)
|
||||||
|
return rel && ig.ignores(rel);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Create the watcher, now with deep ignore support!
|
||||||
const watcher = chokidar.watch(folderPath, {
|
const watcher = chokidar.watch(folderPath, {
|
||||||
ignored: /(^|[\/\\])\..|\.git/,
|
ignored: ignoredFunc,
|
||||||
ignoreInitial: false, // wichtig: ruft add-Events für vorhandene Dateien auf!
|
ignoreInitial: false,
|
||||||
persistent: true,
|
persistent: true,
|
||||||
depth: 99,
|
depth: 99,
|
||||||
awaitWriteFinish: { stabilityThreshold: 300, pollInterval: 100 }
|
awaitWriteFinish: { stabilityThreshold: 300, pollInterval: 100 }
|
||||||
|
|||||||
Reference in New Issue
Block a user