我有一个带有index.js的节点项目,如下所示:
var nodemon = require('nodemon');
var obj = {};
obj.watch = [];
obj.watch.push("force-app");
obj.exec = "echo changedFileName"; //I want to print actual name of the file here.
obj.ext = "cls,xml,json,js,trigger,cpm,css,design,svg";
obj.delay = "2500";
obj.verbose = true;
nodemon(obj);
var fileChanged = undefined;
nodemon.on('start', function () {
console.log(fileChanged);
console.log('nodemon started');
}).on('crash', function () {
console.log('script crashed for some reason');
}).on('restart', function (filesList) {
fileChanged = filesList[0];
console.log(filesList[0]);
console.log('nodemon restarted');
});
它的作用:
force-app
文件夹当前输出:
John@John-Mac:~/workspace/TEST_PROJECT$ node index.js
changedFileName
undefined
nodemon started
changedFileName
undefined
nodemon started
/home/John/workspace/TEST_PROJECT/force-app/main/default/classes/Test.cls
nodemon restarted
问题:
正如我们在上面的输出中看到的那样,更改的文件名即将出现在重新启动事件处理程序中,但是如何将该文件名传递给exec命令,以便可以使用echo
命令打印实际的文件名。
答案 0 :(得分:1)
没有明显的方法可以通过nodemon config来实现您的请求,但是您可以使用chokidar
,这是nodemon内部用于监视更改的相同软件包:
var nodemon = require('nodemon');
var chokidar = require('chokidar');
var obj = {};
obj.watch = [];
obj.watch.push("force-app");
obj.exec = "echo 'Watching for changes ...'";
obj.ext = "cls,xml,json,js,trigger,cpm,css,design,svg";
obj.delay = "2500";
obj.verbose = true;
chokidar.watch(obj.watch).on('all', (event, path) => {
console.log(event, path);
});
nodemon(obj);
它使您可以获取有关监视目录和文件的更多详细信息。