Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Should nodemon pass --inspect (et al) to node automatically? #1263

Labels
has PR help wanted needs more info not enough information in issue to debug

Comments

@eilgin
Copy link
Contributor

eilgin commented Feb 23, 2018

  • nodemon -v: 1.15.1
  • node -v: 8.9.4
  • Operating system/terminal environment: MacOS
  • Command you ran: nodemon --inspect

Expected behaviour

Expect to run node --inspect index.js. It should work without specifying the default JS file (nodemon should look for the file defined in "main").

Actual behaviour

It runs node index.js --inspect which doesn't start the debugger. It works only if i specify the JS file with nodemon --inspect index.js.

Steps to reproduce

Just run nodemon --inspect


If applicable, please append the --dump flag on your command and include the output here ensuring to remove any sensitive/personal details or tokens.

@remy
Copy link
Owner

remy commented Feb 26, 2018

Question: how does nodemon know that --inspect should go to the exec and not your script?

@remy remy added needs more info not enough information in issue to debug help wanted labels Feb 26, 2018
@eilgin
Copy link
Contributor Author

eilgin commented Feb 26, 2018

I only found this in the README (which i believe is also the only doc):

If no script is given, nodemon will test for a package.json file and if found, will run the file associated with the main property

Moreover it says later that the "inspect flag [is passed] to node" so i'm confused by your question since the default behavior seems to use the "main" value from package.json (if found) and --inspect is a flag passed to the executed node process therefore nodemon --inspect should be interpreted as nodemon --inspect <file referenced by require('./package.json').main>?

Anyway i'm using the explicit version now.

@remy
Copy link
Owner

remy commented Feb 26, 2018

The main value is used, but the problem is quite subtle. Firstly, the exec may not be node, other developers might be using a different tools, so I can't assume to pass --inspect to the exec.

Equally, I'd have to (to my knowledge) manually maintain a list of node arguments and filter for them and pass them across if present. Other tools (and nodemon) have tried this in the past, but when new flags are added to node, the tool doesn't know about them and thus doesn't pass them (i.e. --inspect is relatively new, and wasn't in previous versions).

If there was a way to iterate and maintain the list of supported node args, then there might be a dynamic solution. Though, I'm not totally against hard coding some common flags into nodemon, like --inspect, --trace-warnings, etc - but I'd like to get some shared input on which would be worth supporting.

@remy remy changed the title One little trick to fix Should nodemon pass --inspect (et al) to node automatically? Feb 26, 2018
@remy
Copy link
Owner

remy commented Feb 26, 2018

Thinking aloud (as it were), maybe, if there's no script arguments to nodemon, it should pass everything (in order) to the exec process.

This would solve the issue of edge cases like if something like --zero-fill-buffers isn't hardcoded. And if you want to stop slurping args, you can use the double-dash method.

ie, this would be possible:

nodemon --inspect -- --inspect
# runs:
> node --inspect index.js --inspect

Thoughts?

remy added a commit that referenced this issue Feb 27, 2018
Fixes #1263

The way it works:

- If the script is detected via index.js from the directory, or from the
package, then all the arguments on the CLI are shifted to execArgs

- If there was a double-dash on the CLI args, then only those before the
double-dash are given to execArgs and the rest remain passed to the
script
@remy remy added the has PR label Feb 27, 2018
@eilgin
Copy link
Contributor Author

eilgin commented Feb 27, 2018

I like the idea of the --. It feels in accordance to the unix tools 👍

@remy
Copy link
Owner

remy commented Feb 27, 2018

@eilgin nodemon has always supported the -- flag, to avoid slurping up args that nodemon used and your scripts used - just making sure it works for the arg-less invocation too.

@eilgin
Copy link
Contributor Author

eilgin commented Feb 27, 2018

I didn't know that, i've started using nodemon only 2 days ago 😄

remy added a commit that referenced this issue Feb 27, 2018
Fixes #1263

The way it works:

- If the script is detected via index.js from the directory, or from the
package, then all the arguments on the CLI are shifted to execArgs

- If there was a double-dash on the CLI args, then only those before the
double-dash are given to execArgs and the rest remain passed to the
script
jimthedev pushed a commit to commitizen/cz-cli that referenced this issue May 24, 2018
This Pull Request updates dependency [nodemon](https://github.com/remy/nodemon) from `v1.11.0` to `v1.17.5`



<details>
<summary>Release Notes</summary>

### [`v1.17.5`](https://github.com/remy/nodemon/releases/v1.17.5)
[Compare Source](remy/nodemon@ff79835...v1.17.5)
##### Bug Fixes

* in watch, use fully filtered ignore rules ([b3fc3a9](remy/nodemon@b3fc3a9)), closes [#&#8203;1348](`remy/nodemon#1348)

---

### [`v1.17.4`](https://github.com/remy/nodemon/releases/v1.17.4)
[Compare Source](remy/nodemon@6925494...v1.17.4)
##### Bug Fixes

* {{filename}} is only replaced once ([f616258](remy/nodemon@f616258))
* increase perf of watching large file count ([58b82f2](remy/nodemon@58b82f2)), closes [#&#8203;1317](`remy/nodemon#1317)
* only hook SIGINT on boot - not at require ([9bbc219](remy/nodemon@9bbc219)), closes [#&#8203;1326](`remy/nodemon#1326)
* support env.SUPPRESS_SUPPORT ([#&#8203;1334](`remy/nodemon#1334)) ([ee2aac1](remy/nodemon@ee2aac1))

---

### [`v1.17.3`](https://github.com/remy/nodemon/releases/v1.17.3)
[Compare Source](remy/nodemon@v1.17.2...v1.17.3)
##### Bug Fixes

* don't throw when required in the repl ([aa18c80](remy/nodemon@aa18c80)), closes [#&#8203;1292](`remy/nodemon#1292)

---

### [`v1.17.2`](https://github.com/remy/nodemon/releases/v1.17.2)
[Compare Source](remy/nodemon@v1.17.1...v1.17.2)
##### Bug Fixes

* prevent throw when args missing ([#&#8203;1288](`remy/nodemon#1288)) ([89d6062](remy/nodemon@89d6062)), closes [#&#8203;1286](`remy/nodemon#1286)
* watch count regression ([#&#8203;1287](`remy/nodemon#1287)) ([372e6b2](remy/nodemon@372e6b2)), closes [#&#8203;1283](`remy/nodemon#1283)

---

### [`v1.17.1`](https://github.com/remy/nodemon/releases/v1.17.1)
[Compare Source](remy/nodemon@v1.17.0...v1.17.1)
##### Bug Fixes

* throwing exeception on run ([85ed19d](remy/nodemon@85ed19d)), closes [#&#8203;1276](`remy/nodemon#1276)

---

### [`v1.17.0`](https://github.com/remy/nodemon/releases/v1.17.0)
[Compare Source](remy/nodemon@v1.16.1...v1.17.0)
##### Bug Fixes

* make it possible for windows to checkout ([#&#8203;1270](`remy/nodemon#1270)) ([0f39b2e](remy/nodemon@0f39b2e)), closes [#&#8203;1255](`remy/nodemon#1255)
* windows exec resolution ([#&#8203;1274](`remy/nodemon#1274)) ([7ffd545](remy/nodemon@7ffd545)), closes [#&#8203;1251](`remy/nodemon#1251)
* make clear where more opts are in help ([#&#8203;1271](`remy/nodemon#1271)) ([f4391d4](remy/nodemon@f4391d4))
* put windows drive letter tweak in right place ([#&#8203;1272](`remy/nodemon#1272)) ([94b526f](remy/nodemon@94b526f)), closes [#&#8203;1263](`remy/nodemon#1263)
##### Features

* try to resolve exec in node_modules/.bin ([#&#8203;1275](`remy/nodemon#1275)) ([7fb365d](remy/nodemon@7fb365d)), closes [#&#8203;1268](`remy/nodemon#1268)
* feed args to exec when detecting script ([#&#8203;1273](`remy/nodemon#1273)) ([e41f3c3](remy/nodemon@e41f3c3)), closes [#&#8203;1263](`remy/nodemon#1263)

_Note: due to an oddity in the automated build process, nodemon was bumped two minor versions instead of one. Nothing to worry about though._

---

### [`v1.16.1`](remy/nodemon@v1.16.0...v1.16.1)
[Compare Source](remy/nodemon@v1.16.0...v1.16.1)


---

### [`v1.16.0`](remy/nodemon@1cda8fa...v1.16.0)
[Compare Source](remy/nodemon@1cda8fa...v1.16.0)


---

### [`v1.15.1`](https://github.com/remy/nodemon/releases/v1.15.1)
[Compare Source](remy/nodemon@v1.15.0...v1.15.1)
##### Bug Fixes

* ensure directories are watched, not files ([#&#8203;1260](`remy/nodemon#1260)) ([1cda8fa](remy/nodemon@1cda8fa)), closes [#&#8203;1259](`remy/nodemon#1259)

---

### [`v1.15.0`](https://github.com/remy/nodemon/releases/v1.15.0)
[Compare Source](remy/nodemon@v1.14.12...v1.15.0)
##### Features

* add support for `--spawn` ([#&#8203;1249](`remy/nodemon#1249)) ([5e88b04](remy/nodemon@5e88b04)), closes [#&#8203;1245](`remy/nodemon#1245)

---

### [`v1.14.12`](https://github.com/remy/nodemon/releases/v1.14.12)
[Compare Source](remy/nodemon@v1.14.11...v1.14.12)
##### Bug Fixes

* sniff for child.stdout before using it ([79e61f0](remy/nodemon@79e61f0))
* wrongly normalizing slashes in windows ([33fa6f4](remy/nodemon@33fa6f4)), closes [#&#8203;1236](`remy/nodemon#1236)

---

### [`v1.14.11`](https://github.com/remy/nodemon/releases/v1.14.11)
[Compare Source](remy/nodemon@v1.14.10...v1.14.11)
##### Bug Fixes

* don't ignore dot-directories ([4be493c](remy/nodemon@4be493c)), closes [#&#8203;1223](`remy/nodemon#1223)
* update deps - chokidar@&#8203;2.0.0 in particular ([9d49852](remy/nodemon@9d49852))

---

### [`v1.14.10`](https://github.com/remy/nodemon/releases/v1.14.10)
[Compare Source](remy/nodemon@v1.14.9...v1.14.10)
##### Bug Fixes

* node < 6.4.0 causing crash on 'rs' trigger ([e90f15a](remy/nodemon@e90f15a)), closes [#&#8203;1218](`remy/nodemon#1218)

---

### [`v1.14.9`](https://github.com/remy/nodemon/releases/v1.14.9)
[Compare Source](remy/nodemon@64a82ff...v1.14.9)
##### Bug Fixes

* correctly pass ignored rules to chokidar ([718a9ad](remy/nodemon@718a9ad)), closes [#&#8203;1202](`remy/nodemon#1202)
* ignorePermissionErrors in chokidar ([e95ea6f](remy/nodemon@e95ea6f))

---

### [`v1.14.8`](https://github.com/remy/nodemon/releases/v1.14.8)
[Compare Source](remy/nodemon@6e7ce4b...v1.14.8)
##### Bug Fixes

* clarify which config files are actually used ([2582d96](remy/nodemon@2582d96)), closes [#&#8203;1204](`remy/nodemon#1204)
* fail gracefully if postinstall fails ([64a82ff](remy/nodemon@64a82ff))

---

### [`v1.14.7`](https://github.com/remy/nodemon/releases/v1.14.7)
[Compare Source](remy/nodemon@v1.14.6...v1.14.7)
##### Bug Fixes

* swallow child.stdin err ([6e7ce4b](remy/nodemon@6e7ce4b)), closes [#&#8203;1195](`remy/nodemon#1195)

---

### [`v1.14.6`](https://github.com/remy/nodemon/releases/v1.14.6)
[Compare Source](remy/nodemon@v1.14.5...v1.14.6)
##### Bug Fixes

* watch both js and mjs files if main file is JavaScript ([d78bf3d](remy/nodemon@d78bf3d))

---

### [`v1.14.5`](https://github.com/remy/nodemon/releases/v1.14.5)
[Compare Source](remy/nodemon@v1.14.4...v1.14.5)
##### Bug Fixes

* don't use fork with `node inspect` ([0d9a892](remy/nodemon@0d9a892))

---

### [`v1.14.4`](https://github.com/remy/nodemon/releases/v1.14.4)
[Compare Source](remy/nodemon@v1.14.3...v1.14.4)
##### Bug Fixes

* expose no update flag ([c637717](remy/nodemon@c637717))
* handle exit(2) better ([5a914cb](remy/nodemon@5a914cb))
* incorrect count of watch files being reported ([7a04e2c](remy/nodemon@7a04e2c)), closes [#&#8203;1194](`remy/nodemon#1194)
* properly handle --no-update-notifier ([48048aa](remy/nodemon@48048aa))
* support implicit filename extension ([6e839d4](remy/nodemon@6e839d4)), closes [#&#8203;1193](`remy/nodemon#1193)

---

### [`v1.14.3`](https://github.com/remy/nodemon/releases/v1.14.3)
[Compare Source](remy/nodemon@v1.14.2...v1.14.3)
##### Bug Fixes

* ensure non-slurp is passed to script ([ad226af](remy/nodemon@ad226af)), closes [#&#8203;750](`remy/nodemon#750)

---

### [`v1.14.2`](https://github.com/remy/nodemon/releases/v1.14.2)
[Compare Source](remy/nodemon@v1.14.1...v1.14.2)
##### Bug Fixes

* stop saying there's another update required! ([dcd8911](remy/nodemon@dcd8911))

---

### [`v1.14.1`](https://github.com/remy/nodemon/releases/v1.14.1)
[Compare Source](remy/nodemon@v1.14.0...v1.14.1)
##### Bug Fixes

* defined diretory watching ([1e2516d](remy/nodemon@1e2516d))
* pass stdin to child process on -I ([1d88943](remy/nodemon@1d88943)), closes [#&#8203;1036](`remy/nodemon#1036)
* properly ignore defaults, don't match partial ([4589bc8](remy/nodemon@4589bc8)), closes [#&#8203;916](`remy/nodemon#916)

---

### [`v1.14.0`](https://github.com/remy/nodemon/releases/v1.14.0)
[Compare Source](remy/nodemon@v1.13.3...v1.14.0)
##### Bug Fixes

* remove scoped dep ([d15cf68](remy/nodemon@d15cf68)), closes [#&#8203;1180](`remy/nodemon#1180)
##### Features

* support wildcard extension matching ([009d868](remy/nodemon@009d868))

---

### [`v1.13.3`](https://github.com/remy/nodemon/releases/v1.13.3)
[Compare Source](remy/nodemon@v1.13.2...v1.13.3)
##### Bug Fixes

* nodemon reporting crash ([1171fc1](remy/nodemon@1171fc1)), closes [#&#8203;1173](`remy/nodemon#1173)

---

### [`v1.13.2`](https://github.com/remy/nodemon/releases/v1.13.2)
[Compare Source](remy/nodemon@v1.13.1...v1.13.2)
##### Bug Fixes

* switch to killing using numericals ([e9129c0](remy/nodemon@e9129c0)), closes [#&#8203;956](`remy/nodemon#956) [#&#8203;813](`remy/nodemon#813)

---

### [`v1.13.1`](https://github.com/remy/nodemon/releases/v1.13.1)
[Compare Source](remy/nodemon@v1.13.0...v1.13.1)
##### Bug Fixes

* fixed an issue where we tried to resolve null as path ([10ded94](remy/nodemon@10ded94))
* if no ps, walk /proc to kill child fully ([bf9b7a6](remy/nodemon@bf9b7a6))

---

### [`v1.13.0`](https://github.com/remy/nodemon/releases/v1.13.0)
[Compare Source](remy/nodemon@v1.12.7...v1.13.0)
##### Bug Fixes

* support nodemon index to expand to index.js ([a282afb](remy/nodemon@a282afb)), closes [#&#8203;1165](`remy/nodemon#1165)
##### Features

* support SIGHUP to restart nodemon ([30f999a](remy/nodemon@30f999a)), closes [#&#8203;393](`remy/nodemon#393)
* watch script regardless of extension ([f8a5abe](remy/nodemon@f8a5abe)), closes [#&#8203;461](`remy/nodemon#461)

---

### [`v1.12.7`](https://github.com/remy/nodemon/releases/v1.12.7)
[Compare Source](remy/nodemon@v1.12.6...v1.12.7)
##### Bug Fixes

* defensive check on accessing cmd.args ([fd961d6](remy/nodemon@fd961d6))
* support node arguments again ([d9e93ad](remy/nodemon@d9e93ad)), closes [#&#8203;1161](`remy/nodemon#1161)

---

### [`v1.12.6`](https://github.com/remy/nodemon/releases/v1.12.6)
[Compare Source](remy/nodemon@v1.12.5...v1.12.6)
##### Bug Fixes

* get tests to pass ([cf923a8](remy/nodemon@cf923a8))
* only use fork if node>4 ([f52615c](remy/nodemon@f52615c))
* restore node 4 min support ([6d760f4](remy/nodemon@6d760f4))
* travis CI build before-install ([3a6b8df](remy/nodemon@3a6b8df))

---

### [`v1.12.5`](https://github.com/remy/nodemon/releases/v1.12.5)
[Compare Source](remy/nodemon@v1.12.4...v1.12.5)
##### Bug Fixes

* pass through execArgs from config ([#&#8203;1142](`remy/nodemon#1142)) ([6a4fb22](remy/nodemon@6a4fb22))

---

### [`v1.12.4`](https://github.com/remy/nodemon/releases/v1.12.4)
[Compare Source](remy/nodemon@v1.12.3...v1.12.4)
##### Bug Fixes

* reduce help output (a teeny bit) ([2e1b496](remy/nodemon@2e1b496))

---

### [`v1.12.3`](https://github.com/remy/nodemon/releases/v1.12.3)
[Compare Source](remy/nodemon@24a4b84...v1.12.3)
##### Bug Fixes

* add commit lint ([2af6391](remy/nodemon@2af6391))
* Add support for multi-level filenames ([29a9a44](remy/nodemon@29a9a44))
* bump deps and fix tests for local dev ([#&#8203;1139](`remy/nodemon#1139)) ([6d57dac](remy/nodemon@6d57dac))
* catch module.parent.filename === undefined ([#&#8203;1053](`remy/nodemon#1053)) ([4c81e9a](remy/nodemon@4c81e9a))
* crash when passing argument to node (windows) ([469fa80](remy/nodemon@469fa80)), closes [#&#8203;1095](`remy/nodemon#1095)
* executable path handling under windows ([#&#8203;962](`remy/nodemon#962)) ([481dc8f](remy/nodemon@481dc8f))
* exit when fail to parse the config file ([#&#8203;921](`remy/nodemon#921)) ([63e8606](remy/nodemon@63e8606)), closes [#&#8203;651](`remy/nodemon#651)
* exit with code 1 on crash if --exitcrash ([#&#8203;946](`remy/nodemon#946)) ([facc8cb](remy/nodemon@facc8cb))
* help truncation on node 6.2 ([#&#8203;842](`remy/nodemon#842)) ([#&#8203;843](`remy/nodemon#843)) ([abc138f](remy/nodemon@abc138f))
* read config file before defaulting script parameter ([#&#8203;1110](`remy/nodemon#1110)) ([f3e0c29](remy/nodemon@f3e0c29))
* require node 6 or above in engines ([71eab1a](remy/nodemon@71eab1a))
* Support for .mjs es6 modules ([#&#8203;1138](`remy/nodemon#1138)) ([5a89df6](remy/nodemon@5a89df6))
* support signal on CLI ([#&#8203;1061](`remy/nodemon#1061)) ([3c352f2](remy/nodemon@3c352f2))
* sync help.txt to available options ([9b6c786](remy/nodemon@9b6c786))
* update readme ([3426224](remy/nodemon@3426224))
##### Features

* nodemonConfig support in package.json ([fb5da38](remy/nodemon@fb5da38)), closes [#&#8203;873](`remy/nodemon#873)

---

### [`v1.12.2`](remy/nodemon@469fa80...24a4b84)
[Compare Source](remy/nodemon@469fa80...24a4b84)


---

### [`v1.12.1`](remy/nodemon@6a4803d...469fa80)
[Compare Source](remy/nodemon@6a4803d...469fa80)


---

### [`v1.12.0`](remy/nodemon@8204b69...6a4803d)
[Compare Source](remy/nodemon@8204b69...6a4803d)


---

### [`v1.11.1`](remy/nodemon@v1.11.0...8204b69)
[Compare Source](remy/nodemon@v1.11.0...8204b69)


---

</details>




---

This PR has been generated by [Renovate Bot](https://renovatebot.com).
@valoricDe
Copy link

In version 1.19.2 the nodemon --inspect -- --inspect does not work.
So when I run nodemon --inspect --delay 200ms -- --inspect it seems to pick my start script "start": "node -r esm -r dotenv/config ./bin/www", and translate it to node -r esm -r dotenv/config ./bin/www --inspect --inspect. Therefore I wonder why this ticket is closed. Is it a regression or has there been issues with this approach?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment