web-dev-qa-db-fra.com

Vérifier si le fichier existe dans Gulp

J'ai besoin de vérifier si un fichier existe dans une tâche gulp, je sais que je peux utiliser certaines fonctions de nœud de nœud, il y en a deux:

fs.exists() et fs.existsSync()

Le problème est que, dans la documentation du noeud, cela signifie que ces fonctions seront obsolètes.

29
Caio Kawasaki

Vous pouvez utiliser fs.access

fs.access('/etc/passwd', (err) => {
    if (err) {
        // file/path is not visible to the calling process
        console.log(err.message);
        console.log(err.code);
    }
});

Liste des codes d'erreur disponibles ici


L'utilisation de fs.access() pour vérifier l'accessibilité d'un fichier avant d'appeler fs.open(), fs.readFile() ou fs.writeFile() n'est pas recommandée. Cela introduit une condition de concurrence critique, car d'autres processus peuvent modifier l'état du fichier entre les deux appels. Au lieu de cela, le code utilisateur doit ouvrir/lire/écrire le fichier directement et gérer l'erreur générée si le fichier n'est pas accessible.

40
Alexander

Tu pourrais ajouter

var f;

try {
  var f = require('your-file');
} catch (error) {

  // ....
}

if (f) {
  console.log(f);
}
1
Raulucco

À partir de 2018, vous pouvez utiliser fs.existsSync() :

fs.exists () est obsolète, mais fs.existsSync () ne l'est pas. Le paramètre callback de fs.exists () accepte les paramètres incohérents avec les autres rappels Node.js. fs.existsSync () n'utilise pas de rappel.

Voir cette réponse pour plus de détails.

0
Jack Steam

Le noeud documentatión déconseille d'utiliser stat pour vérifier si un fichier existe :

Utiliser fs.stat () pour vérifier l’existence d’un fichier avant d’appeler fs.open (), fs.readFile () ou fs.writeFile () n’est pas recommandé . Au lieu de cela, user code devrait ouvrir/lire/écrire le fichier directement et gérer l'erreur générée si le fichier n'est pas disponible.

Pour vérifier si un fichier existe sans le manipuler par la suite, fs.access () est recommandé.

Si vous n'avez pas besoin de lire ou d'écrire le fichier, vous devez utiliser fs.access, de manière simple et asynchrone:

try {
	fs.accessSync(path)
	// the file exists
}catch(e){
	// the file doesn't exists
}

0
David Lemon