Watcher no longer working for front end assets


I have had to come back to an old project after a nine month break, and now my watcher is no longer working for my front end. The only thing that has changed, that I am aware of, is an OS upgrade on my MBP to Ventura 13.6.

My front end is Elm with some custom JS.

My setup is as follows:

I use elm-watch to watch my .elm files and build my Elm JS file when there is a change to my Elm files. This is working as expected, and it does rebuild my Elm app to my assets/js folder.

I then have a custom watcher (dev-release.js) which is referenced in my config/dev.exs file to watch for changes to all my assets/js files, and when a change is detected, copies the relevant file to a front-end-releases folder which is at the root of my project. These are the files that are loaded by templates/layout/app.html.eex.

My problem appears to be that my dev-release.js watcher is not working at all - I have logging in this file that is not appearing in the terminal.

The relevant lines in my dev.exs are as follows:

  watchers: [
    node: [
      cd: Path.expand("../assets", __DIR__)
    node: [
       cd: Path.expand("../assets", __DIR__)

My dev-release.js:

const fs = require('fs');
const chokidar = require("chokidar");
const { execSync } = require("child_process");

const log = console.log.bind(console);

// Exit the process when standard input closes due to:
process.stdin.on("end", function () {
  log("standard input end");


    ***** WATCH *****

function watch(filename) {
  const watcher ="./js/" + filename + ".js", {
    ignored: /(^|[\/\\])\../, // ignore dotfiles
    persistent: true

    .on("change", releaseFile)

  function releaseFile(path) {
    var changedFilePath = path;
    try {
      fs.readFile("../version-control/versions.json", 'utf8', (err, data) => {
        if (err) {
        var versions = JSON.parse(data)
        var target = changedFilePath.split("/")[1].split(".")[0]
        var version = versions[target].version
        var outputDir = "../" + versions[target].path + "/" + target + "/" + version

        fs.mkdir(outputDir, { recursive: true }, function (error, path) {
          if (path) {
            log("-----> created dir -> " + path)

        var targetFile = "./js/" + target + ".js"
        var outputFile = outputDir + "/" + target + ".min.js";

        fs.copyFile(targetFile, outputFile, function () {
          log("-----> copied " + targetFile + " -> " + outputFile)
          log("-----> Version: " + version)

    } catch (error) { console.error(error) }

Anyone have any ideas why my watcher is no longer working?