remy / nodemon

Monitor for any changes in your node.js application and automatically restart the server - perfect for development

Home Page:http://nodemon.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nodemon config file different than json

stychu opened this issue · comments

Am I missing something or it's not possible to define custom js config file for nodemon to use it?

currently I have this nodemon.json

{
  "watch": ["./root-server", ".env", "./src/lib/logger"],
  "exec": "ts-node --project tsconfig.server.json ./root-server/server.ts",
  "ext": "js ts"
}

I would like to run some logic to extract imported files into the root-server and add them the watch for nodemon but it's not possible with .json files.

You're not missing anything…

Seen here (I've snipped some of the output as it's not relevant):

$ cat nodemon.json
{
  "watch": ["./root-server", ".env", "./src/lib/logger"],
  "exec": "ts-node --project tsconfig.server.json ./root-server/server.ts",
  "ext": "js ts"
}

$ nodemon --dump
[nodemon] 3.0.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): root-server .env src/lib/logger
[nodemon] watching extensions: js,ts
--------------
node: v20.6.0
nodemon: 3.0.2
command: /Users/remy/.nvm/versions/node/v20.6.0/bin/node /Users/remy/.nvm/versions/node/v20.6.0/bin/nodemon --dump
cwd: /Users/remy/dev/nodemon/issues/2183
OS: darwin x64
--------------
{
  run: false,
  system: { cwd: '/Users/remy/dev/nodemon/issues/2183' },
  required: false,
  dirs: [ '/Users/remy/dev/nodemon/issues/2183' ],
  timeout: 1000,
  options: {
    dump: true,
    watch: [
      './root-server',
      '.env',
      './src/lib/logger',
      re: /\.\/root\-server|\.env|\.\/src\/lib\/logger/
    ],
    exec: 'ts-node --project tsconfig.server.json ./root-server/server.ts',
    monitor: [
      './root-server',
      '.env',
      './src/lib/logger',
      '!**/.git/**',
      '!**/.nyc_output/**',
      '!**/.sass-cache/**',
      '!**/bower_components/**',
      '!**/coverage/**',
      '!**/node_modules/**'
    ],
    execOptions: {
      script: null,
      exec: 'ts-node --project tsconfig.server.json ./root-server/server.ts',
      args: [],
      scriptPosition: null,
      nodeArgs: undefined,
      execArgs: [],
      ext: 'js,ts',
      env: {}
    }
  },
  command: {
    raw: {
      executable: 'ts-node --project tsconfig.server.json ./root-server/server.ts',
      args: []
    },
    string: 'ts-node --project tsconfig.server.json ./root-server/server.ts'
  }
}
--------------

Im not sure if my question was clear enough. I was asking if its possible to define nodemon configuration file as javascript file instead of json file in order to execute some bootstrap logic before nodemon picks up the config and runs.
nodemon.json -> nodemon.js or nodemon.config.js

I have a use case where I want to automate getting all files/folders that nodemon should watch for instead of manually setting them in json file.

https://github.com/sverweij/dependency-cruiser

Something like:

// nodemon.js 

import { cruise } from "dependency-cruiser";

// automatically gather all dependency imports from ./another/folder that are contained within ./root-server
// so you dont have to remember or look for files that should cause server restart.
  const cruiseResult = await cruise(["./root-server"]);


module.export = {
  watch: ["./root-server", ...cruiseResult],
  exec: "ts-node --project tsconfig.server.json ./root-server/server.ts",
  ext: "js ts"
}

There's not currently support for a nodemon.config.js type file, but you can require nodemon in a script and pass in a config (which is controlled through JavaScript): https://github.com/remy/nodemon/wiki/As-a-required-module

There's not currently support for a nodemon.config.js type file, but you can require nodemon in a script and pass in a config (which is controlled through JavaScript): Wiki: As a required module ()

Ahh that might work. I will look into it thanks !