node.js - 将更改后的文件名传递给 nodemon 中的命令

标签 node.js nodemon

我有一个带有index.js的 Node 项目,如下所示:

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');
});

它的作用:

  1. 导入nodemon模块
  2. 配置nodemon模块以监视内部的任何文件更改 force-app 文件夹
  3. 添加了启动和重新启动的事件监听器
  4. 我想将文件名作为参数传递,这会导致nodemon重新启动,以回显命令

当前输出:

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 打印实际文件名> 命令。

最佳答案

没有明显的方法可以通过nodemon配置来实现您的请求,但您可以使用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);

它允许您获取有关监视的目录和文件的更多详细信息。

关于node.js - 将更改后的文件名传递给 nodemon 中的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53965473/

相关文章:

Javascript 'object has no method' 错误

javascript - Node.js 读写文件行

node.js - 将我的域指向我的 node.js 实例

javascript - 在 Electron js 中打开辅助/子窗口时对象已被销毁

node.js - 更改文件时如何使用nodemon在npm脚本上重新启动多个服务器文件

node.js - 有没有办法在 Geddy 模型中定义虚拟场?

javascript - 错误 [ERR_MODULE_NOT_FOUND] : Cannot find package 'express' imported from F:\Document\My Project\NODE JS\Sample 1\tinder-backend\server. js

node.js - Nodemon + babel 多次重启服务器

node.js - 找不到 nodemon 命令

node.js - 带有 IcedCoffeeScript 的 Nodemon