Cet article présente principalement la méthode d'utilisation de nodejs pour surveiller les modifications de fichiers et d'utilisation de sftp pour les télécharger sur le serveur. Il est très bon et a une valeur de référence. Les amis qui en ont besoin peuvent s'y référer
Récemment. J'utilise React Express pour créer un site Web Mon propre outil (en fait un vivaneau d'île de chasse au trésor)
Ensuite, comme il doit être modifié fréquemment, il doit également être mis sur le serveur pour être testé. Je dois toujours utiliser Webpack et télécharger les fichiers manuellement, ce qui est très ennuyeux. J'ai donc simplement recherché et écrit un script capable de détecter les modifications de fichiers et de les télécharger automatiquement.
Tout d'abord, nous utilisons npm pour installer deux modules packagés par d'autres.
npm install ssh2-sftp-client npm install gaze
La fonction du premier module est de télécharger des fichiers via sftp,
La fonction du deuxième module Surveillez simplement les modifications des fichiers. Bien entendu, vous pouvez également utiliser le module fs fourni avec node.
L'utilisation de ces deux modules est ici : ssh2-sftp-client gaze
Après l'installation, la première étape consiste à surveiller les modifications du fichier, puisque mon fichier a été construit à l'aide de webpack. D'accord, donc il n'y aura que des modifications de fichiers, aucun fichier ne sera ajouté, vous n'avez donc besoin que d'utiliser modifié ici. Pour d'autres utilisations, veuillez vous référer au lien ci-dessus, ils sont tous similaires
gaze(['你的文件路径/*.*','还可以使用数组的方式监听多个文件夹/app.js'], function(err, watcher) { let watched = this.watched(); //监听文件的变化 this.on('changed', (filepath) => { //romotePath是我文件的远程位置 let romotePath = '/root' + filepath.substr(15); //put为上传文件的函数,下面会讲 put(filepath,romotePath); console.log(filepath + ' was changed'); }); });
function put(localPath,romotePath){ let sftp = new Client(); sftp.connect({ host: '你的服务器地址', port: '端口,没改过的话是22', username: '连接的用户名', password: '密码' }).then(() => { return sftp.put(localPath,romotePath); }).then(() =>{ console.log("上传完成"); }).catch((err) => { console.log(err, 'catch error'); }); }
let Client = require('ssh2-sftp-client'); let gaze = require('gaze');