117 votes

Surveillez les modifications d'un dossier à l'aide de node.js et imprimez les chemins des fichiers lorsqu'ils sont modifiés.

J'essaie d'écrire un script node.js qui surveille les changements dans un répertoire de fichiers, puis imprime les fichiers qui sont modifiés. Comment puis-je modifier ce script pour qu'il surveille un répertoire (au lieu d'un fichier individuel), et imprime les noms des fichiers dans le répertoire lorsqu'ils sont modifiés ?

var fs = require('fs'),
    sys = require('sys');
var file = '/home/anderson/Desktop/fractal.png'; //this watches a file, but I want to watch a directory instead
fs.watchFile(file, function(curr, prev) {
    alert("File was modified."); //is there some way to print the names of the files in the directory as they are modified?
});

186voto

mtsr Points 1262

Essayez Chokidar :

var chokidar = require('chokidar');

var watcher = chokidar.watch('file or dir', {ignored: /^\./, persistent: true});

watcher
  .on('add', function(path) {console.log('File', path, 'has been added');})
  .on('change', function(path) {console.log('File', path, 'has been changed');})
  .on('unlink', function(path) {console.log('File', path, 'has been removed');})
  .on('error', function(error) {console.error('Error happened', error);})

Chokidar résout certains des problèmes multiplateformes liés à l'observation des fichiers en utilisant uniquement fs.

61voto

Kaushik Evani Points 451

Pourquoi ne pas simplement utiliser l'ancien fs.watch ? C'est assez simple.

fs.watch('/path/to/folder', (eventType, filename) => {
console.log(eventType);
// could be either 'rename' or 'change'. new file event and delete
// also generally emit 'rename'
console.log(filename);
})

Pour plus d'informations et de détails sur le paramétrage des options, voir Node fs Docs

16voto

Sharathi RB Points 195

Essayez chien courant :

hound = require('hound')

// Create a directory tree watcher.
watcher = hound.watch('/tmp')

// Create a file watcher.
watcher = hound.watch('/tmp/file.txt')

// Add callbacks for file and directory events.  The change event only applies
// to files.
watcher.on('create', function(file, stats) {
  console.log(file + ' was created')
})
watcher.on('change', function(file, stats) {
  console.log(file + ' was changed')
})
watcher.on('delete', function(file) {
  console.log(file + ' was deleted')
})

// Unwatch specific files or directories.
watcher.unwatch('/tmp/another_file')

// Unwatch all watched files and directories.
watcher.clear()

Il s'exécutera une fois que le fichier a été modifié

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X