How to detect when --watch flag has been passed to `deno run` programatically?
I am writing a small cli script, and I have a few bits of code that do not play nicely with
deno run --watch <script>
. (e.g. Deno.addSignalListener('SIGINT', graceful_shutdown)
. What I want to do is only set up that listener when I am running my cli app in 'production mode'. E.g. while I am developing the cli app with --watch
I do not want to set up shutdown listeners. Is there a way to accomplish this with the Deno
global perhaps? My current workaround is to pass some custom flag to my cli script when I am in development, like --mode=development
or --no-signal
, but this is a bit confusing for users because this flag is only important for development.2 Replies
Based on the documentation, there isn't a direct way to programmatically detect if the
--watch
flag has been passed to deno run
. The Deno
global does not provide this information.
Your current workaround of passing a custom flag like --mode=development
or --no-signal
is a valid approach. You can check for this flag in your script using Deno.args
, which is an array of command-line arguments passed to the script.
Here's a simple example:
In this example, the SIGINT
signal listener is only added if the --mode=development
flag is not present in the command-line arguments.
Remember to clearly document this behavior for your users, as this is not a standard Deno feature and might not be expected.Thanks, thats what I ended up doing. If other people run into this workflow, maybe we can consider a feature request. For now though, this is good enough