Cli: [์งˆ๋ฌธ] ๊ธ€๋กœ๋ฒŒ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ Powershell ์Šคํฌ๋ฆฝํŠธ ์ง€์›์˜ ํ•„์š”์„ฑ

์— ๋งŒ๋“  2019๋…„ 11์›” 11์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: npm/cli

๋ญ? ์™œ


https://github.com/npm/read-cmd-shim/pull/6์— ๋”ฐ๋ผ ์ „์—ญ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ PowerShell ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. Windows์—์„œ ps1 ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด์•ˆ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ ๋กœ์›€์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

* * .ps1์€์ด ์‹œ์Šคํ…œ์—์„œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—๋กœ๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด์ „์—๋Š” PowerShell์ด โ€‹โ€‹๋Œ€์‹  cmd ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์ „์—ญ npm ํŒจํ‚ค์ง€๊ฐ€ ์ฆ‰์‹œ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ถ”๊ฐ€๋กœ ์ธํ•ด ์‚ฌ๋žŒ๋“ค, ํŠนํžˆ Windows์—์„œ Visual Studio Code์˜ ๊ธฐ๋ณธ ์ œ๊ณต ํ„ฐ๋ฏธ๋„ ์ธ PowerShell์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ์‚ฌ์ด์—์„œ ๋งŽ์€ ํ˜ผ๋ž€์ด ๋ฐœ์ƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ

https://github.com/microsoft/TypeScript/issues/35031
https://stackoverflow.com/questions/58796490/tsc-ps1-cannot-be-loaded-because-running-scripts-is-disabled-on-this-system
๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ๋ช‡ ๊ฐ€์ง€ ์ตœ์‹  ๋‹ต๋ณ€์€ ps1 ํŒŒ์ผ ์‚ญ์ œ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
https://stackoverflow.com/questions/57673913/vsc-powershell-after-npm-updating-packages-ps1-cannot-be-loaded-because-runnin

Needs Discussion Question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

npm bin ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“  *.ps1 ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ญ์ œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  13 ๋Œ“๊ธ€

@Cerlancism. PowerShell์— ๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

๋˜๋Š”

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

.ps1 PowerShell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ ํ•œ ํ›„

๋ฟก ๋นต๋€จ
https://github.com/npm/read-cmd-shim/pull/6 ์—์„œ powershell ์ง€์›์—์„œ ์ถ”์ถœ ๊ฒฝ๋กœ ๋งŒ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
์ด ๊ธฐ๋Šฅ์€ https://github.com/npm/cli/pull/281 ์šฉ์ž…๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ * .ps๊ฐ€ ์ถ”๊ฐ€ ๋œ ์ด์œ ๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด https://github.com/npm/cmd-shim/pull/34 ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

PowerShell ์Šคํฌ๋ฆฝํŠธ๋Š” ๋˜ํ•œ ํŒŒ์ดํ”„ ๋ผ์ธ ์ž…๋ ฅ์ด ์ „๋‹ฌ๋˜์—ˆ์„ ๋•Œ ํ‘œ์ค€ ์ž…๋ ฅ์„ Node.js ํ”„๋กœ์„ธ์Šค ( https://github.com/npm/cmd-shim/pull/43 )๋กœ ํŒŒ์ดํ”„ํ•˜๋Š” ๊ธฐ๋ณธ ์ œ๊ณต ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ์œ ์ผํ•œ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ.

๋ฐฉ๊ธˆ ์ƒˆ ์ปดํ“จํ„ฐ์— ์ตœ์‹  NPM์„ ์„ค์น˜ํ–ˆ๋Š”๋ฐ ์ด๊ฒƒ์€ ์ƒ์ž์—์„œ ๊บผ๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋™์•ˆ ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋™์ž‘์ž…๋‹ˆ๋‹ค.

@ RAJU2529์—์„œ ์ œ๊ณตํ•˜๋Š” ์†”๋ฃจ์…˜์€ ์ปดํ“จํ„ฐ์—์„œ ์›ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ํ•œ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์— ๊ฐ€์ž… ๋œ ์ปดํ“จํ„ฐ์—์„œ์ด ์„ค์ •์€ ์กฐ์ง ์„ค์ •์— ์˜ํ•ด ์ œ์–ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ์—์„œ ๊ด€๋ฆฌ์ž ์ธ ๊ฒฝ์šฐ์—๋„ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
NPM ๋ฒ„์ „์„ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

npm bin ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“  *.ps1 ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ญ์ œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@ ExE-Boss ๊ทธ๊ฒŒ ๋‚ด๊ฐ€ ์ง€๊ธˆ ๋๋‚ธ ์ผ์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค ...

์œ„ ๋‚ด์šฉ์—๋„ ๋™์˜ํ•˜์‹ญ์‹œ์˜ค. ์‹คํ–‰ ์ •์ฑ…์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค ... ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์ง€๋งŒ ... ์™„์ „ํžˆ ๋ฐ”๋ณด์ž…๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ๋นŒ๋“œ ์„œ๋ฒ„๋ฅผ ๋…ธ๋“œ์˜ ์ตœ์‹  LTS๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
์ผ๋ถ€ PowerShell ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Start-Process "npm-cli-login" [...] -NoNewWindow

powershell์ด โ€‹โ€‹์‚ฌ์šฉํ•˜๋Š” ์‹คํ–‰ ํŒŒ์ผ ( (Get-Command npm-cli-login).Source )์„ ๋ฌป๋Š” ๊ฒฝ์šฐ cmd ๋Œ€์‹  ์ƒˆ๋กœ ์ƒ์„ฑ ๋œ ps1 -Files๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

ps1-script๊ฐ€ ์œ ํšจํ•œ ์‹คํ–‰ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ %1 is not a valid win32 application ์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋ฒ„์ „ ๋‚ด์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ด๋ฉฐ ์ตœ์†Œํ•œ ๊ฒ€ํ† ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

npm bin ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“  *.ps1 ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ญ์ œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

npm link ๋˜๋Š” npm i -g ../<package> ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ Windows์—์„œ .ps1 ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋„๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? npm ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ์ด ์—‰๋ง์ง„์ฐฝ์„ ํ•ญ์ƒ ์ฒญ์†Œํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ๋‹ต๋‹ตํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์— ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ๋น ๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” PowerShell์— ๋Œ€์‹  cmd ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. <package-name>.cmd

์˜ˆ๋ฅผ ๋“ค์–ด TypeScript์˜ ๊ฒฝ์šฐ :
๋Œ€์‹ ์—
tsc -v ์ด์ œ PowerShell์—์„œ tsc.ps1์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉํ•˜๋‹ค
tsc.cmd -v

์‹œ์Šคํ…œ์— ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ๋น ๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” PowerShell์— ๋Œ€์‹  cmd ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. <package-name>.cmd

์˜ˆ, .cmd ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด powershell์ด โ€‹โ€‹์˜ฌ๋ฐ”๋ฅธ ์‹คํ–‰ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฆด๋ฆฌ์Šค ํ›„์— ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผํ•˜๋Š” ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์˜ ๋ฒ„์ „์„ ์ง€์ •ํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์–ด์จŒ๋“  ๋ณ€๊ฒฝ
  • ๋…ธ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค-> ๊ฐ€๋Šฅํ•œ ๋ณด์•ˆ ๋ฌธ์ œ.

์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•œ ํ’€ ์š”์ฒญ 34 ๋Š”์ด๋ฅผ npm ๋ฌธ์ œ 20699์— ๋Œ€ํ•œ ์ˆ˜์ •์œผ๋กœ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๋ฉด ํ•ต์‹ฌ ๋ฌธ์ œ๋Š” Windows ๋ช…๋ น ์ค„์—์„œ ์•ฐํผ์ƒŒ๋“œ ๋ฌธ์ž๋ฅผ ๋ช…๋ น ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ช…๋ น ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ํ•ด์„๋˜๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

image

๊ทธ๋Ÿฌ๋‚˜ Windows ๋ช…๋ น ์ค„์—์„œ๋Š” ์บ๋Ÿฟ์œผ๋กœ ์•ฐํผ์ƒŒ๋“œ ๋ฌธ์ž๋ฅผ ์ด์Šค์ผ€์ดํ”„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ^&

image

Longshot, ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ด๋Ÿฌํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋„์ž… ํ•œ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋Œ€์•ˆ ์†”๋ฃจ์…˜ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ธ์ˆ˜๊ฐ€ Windows ๋ช…๋ น ์ค„ ๋ฐ ์ •๊ทœ์‹์œผ๋กœ ํ–ฅํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๊ฑฐ๋‚˜ ์บ๋Ÿฟ ๋ฌธ์ž๋ฅผ ์ธ์ˆ˜์— ์ด์Šค์ผ€์ดํ”„๋กœ ์‚ฝ์ž… ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? @ ExE-Boss ๋ณด์Šค์™€ ๊ฐ™์€ ์‚ฌ๋žŒ์ด ๋น„์Šทํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์—†๋Š” ์ด์œ ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์Œ ๋ฌธ์„œ์—์„œ๋Š” Windows ๋ช…๋ น ์ค„ ์ธ์ˆ˜ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๊ฐ€์ด๋“œ๋กœ ์‚ฌ์šฉ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
https://docs.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way

๋‚˜๋Š” ์ด๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ps1 ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ดํ”„๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์œ
๋” ์˜ˆ์˜๋‹ค

์˜ˆ๋ฅผ ๋“ค์–ด Powershell์—์„œ ๋‹ค์Œ์„ ์‹คํ–‰ํ•  ๋•Œ :
echo '{"a": 1}' | prettyjson

ํ„ฐ๋ฏธ๋„์€ CTRL + C๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๊นŒ์ง€ ์ž…๋ ฅ์„ ๊ณ„์† ๋Œ€๊ธฐํ•˜๊ณ  ์˜ˆ์ƒ ์ถœ๋ ฅ์—†์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ .cmd ์„ ๋ช…๋ น์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋Œ€์‹  cmd๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
echo '{"a": 1}' | prettyjson.cmd

์ถœ๋ ฅ

a: 1

stackoverflow์— ๋Œ€ํ•œ ๋‚ด ์งˆ๋ฌธ : https://stackoverflow.com/questions/62951533/why-pipes-are-not-working-on-powershell-for-various-nodejs-cli-tools

์ตœ์‹  ์ •๋ณด

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. stdin ๋ฐฐ๊ด€์— ๋Œ€ํ•ด https://github.com/npm/cli/issues/470#issuecomment -568165144 ์ด์ „์— ์—ฌ๊ธฐ์— ์ฃผ์„์„ ๋‹ฌ์•˜์œผ๋ฉฐ PR์€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค https://github.com/npm/cmd-shim / pull / 43 . ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ .cmd ๊ฒƒ์€ ํŒŒ์ดํ”„์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰