Skip to content

Instantly share code, notes, and snippets.

@mykohsu
Forked from giggio/npm.cmd
Last active February 4, 2016 02:29
Show Gist options
  • Save mykohsu/fe517163b1bc2beaf170 to your computer and use it in GitHub Desktop.
Save mykohsu/fe517163b1bc2beaf170 to your computer and use it in GitHub Desktop.
Alternative npm.cmd for VS201X node tools integration. Caches npm ls -g result until a different npm command is issued.
:: VS201X alternative for %PROGRAMFILES%\nodejs\npm.cmd
@ECHO OFF
SETLOCAL
SET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (
SET "NODE_EXE=node"
)
SET "OUTDIR=%~dp0"
SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO (
SET "OUTDIR=%%F"
SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
)
IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)
IF "%1 %2 %3"=="ls -g " (
IF NOT EXIST "%OUTDIR%\npm.ls-g.cache" (
"%NODE_EXE%" "%NPM_CLI_JS%" %*>"%OUTDIR%\npm.ls-g.cache"
)
FOR /F "tokens=2 delims=:" %%F IN ('CALL CHCP') DO (
SET "LS-GCHCP=%%F"
)
CHCP 65001>nul
TYPE "%OUTDIR%\npm.ls-g.cache"
CHCP %LS-GCHCP%>nul
) ELSE (
ERASE "%OUTDIR%\npm.ls-g.cache" 2>nul
"%NODE_EXE%" "%NPM_CLI_JS%" %*
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment