English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Use nodejs to monitor file changes and upload to the server using sftp

Je utilise récemment react+express pour créer un site web utilitaire personnel (c'est-à-dire un outil de enchères sur treasure island)

Ensuite, en raison des modifications fréquentes et du besoin de les tester sur le serveur, il faut toujours utiliser webpack et télécharger manuellement les fichiers, ce qui est fastidieux. Finalement, après une recherche, j'ai écrit un script capable de détecter les changements de fichiers et de les télécharger automatiquement.

Tout d'abord, nous utilisons npm pour installer deux modules encapsulés par d'autres personnes.

npm install ssh2-sftp-client
npm install gaze

Le premier module a pour fonction l'upload de fichiers via sftp

Le deuxième module a pour fonction d'écouter les changements de fichiers. Bien sûr, vous pouvez également utiliser le module natif fs de Node.

Les utilisations de ces deux modules sont présentées ici:ssh2-sftp-client gaze

Après l'installation, la première étape consiste à écouter les changements de fichiers. Étant donné que mes fichiers ont été construits avec webpack, il n'y aura pas d'ajout de fichiers, donc il suffit d'utiliser 'changed' ici. D'autres utilisations, veuillez consulter les liens ci-dessus, qui sont tous similaires

gaze(['votre chemin de fichier/*.*','on peut également utiliser la méthode d'écoute de plusieurs dossiers via un tableau/app.js], function(err, watcher) {
 let watched = this.watched();
 //écouter les changements de fichiers
 this.on('changed', (filepath) => {
 //remotePath est l'emplacement distant de mon fichier
 let remotePath = '/root + filepath.substr(15;
 //put est une fonction d'upload de fichiers, nous en parlerons plus tard 
 put(filepath,remotePath);
 console.log(filepath + a été modifié');
 });
}); 

ensuite, commençons à écrire notre fonction d'upload de fichiers

function put(localPath,remotePath){
 let sftp = new Client();
 sftp.connect({
 host: 'votre adresse de serveur',
 port: 'port, si non modifié, c'est22',
 nom d'utilisateur: 'nom d'utilisateur de la connexion',
 mot de passe: 'mot de passe'
 }).then(() => {
 return sftp.put(localPath,romotePath);
 }).then(() =>{
 console.log("Téléchargement terminé");
 }).catch((err) => {
 console.log(err, 'catch error');
 });
}

Bien sûr, n'oubliez pas d'importer les modules au début de notre fichier.

let Client = require('ssh2-sftp-client');
let gaze = require('gaze');

Ensuite, nous allons faire une expérience. Venons dans notre dossier webpack

En effet, on peut voir que les modifications ont été apportées et téléchargées avec succès. Le téléchargement prend du temps, veuillez patienter.

Nous sommes venus sur notre serveur, et en effet, la date de modification récente a été modifiée en ce moment.

Désormais, je n'ai plus besoin de télécharger un par un. Chaque fois que je dois modifier, je l'ouvre directement. Ouvrez une fenêtre pour exécuter ce script et vous pouvez codage en toute tranquillité.

Ce que j'ai mentionné ci-dessus est ce que l'éditeur vous présente sur la surveillance des changements de fichiers en utilisant nodejs et l'upload via sftp sur le serveur, j'espère que cela vous sera utile. Si vous avez des questions, laissez un message, l'éditeur vous répondra à temps. Je remercie également tous les membres de ce site de leur soutien au site de tutoriels d'alarme !

Déclaration : le contenu de cet article est tiré d'Internet, et appartient au propriétaire original. Le contenu est apporté par les utilisateurs d'Internet de manière spontanée et auto-proposée. Ce site n'est pas propriétaire des droits, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu présumé enfreignant les droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu présumé enfreignant les droits d'auteur.