npm / cmd-shim

The cmd-shim used in npm
ISC License
76 stars 40 forks source link

[BUG] .cmd @echo off #68

Open cshorler opened 2 years ago

cshorler commented 2 years ago

Is there an existing issue for this?

Current Behavior

this is similar to what is raised here (never resolved): https://github.com/npm/npm/issues/19681

At a Windows command prompt running npm -v with npm@latest seems to hang. Typing echo on brings back the prompt as described in the above bug.

This seems to contradict Microsoft documentation for @echo off, that remarks (to quote) "If used in a batch file, echo on and echo off don't affect the setting at the command prompt."

I see this behaviour on Windows 10.

If I patch the npm.cmd file like this, it behaves well:

@SETLOCAL
@FOR /f "tokens=1,2,3 delims=. " %%G IN ('ECHO') DO @SET _echo=%%I
@ECHO off

GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start

CALL :find_dp0

IF EXIST "%dp0%\node.exe" (
  SET "_prog=%dp0%\node.exe"
) ELSE (
  SET "_prog=node"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)

ENDLOCAL & (CALL) || TITLE %COMSPEC% & "%_prog%" "%dp0%\node_modules\npm\bin\npm-cli.js" %* & ECHO %_echo%

Expected Behavior

normal exit, no change to current prompt setting.

Steps To Reproduce

  1. Start cmd prompt
  2. Run npm -v at the prompt
  3. appears to hang, echo on fixes

Environment