This is IT

技術、日常

【npm】【WSL2】ブラウザを開かず、CLIのみで`npm login`を実行したい

環境

❯ npm -version
10.0.0

❯ node -v
v20.6.0

❯ cat /etc/debian_version
12.1

結論

npm login --auth-type legacyを実行してください。

解説

なぜCLIでログインする必要があるのか

WSL2ではいい感じにパスを通したりしない限り、CLIからGUIのブラウザを開くことが出来ません。

そのため、WSL2でnpmにログインをしようとnpm loginを行うと...

❯ npm login --registry=https://registry.npmjs.org/
npm notice Log in on https://registry.npmjs.org/
Login at:
https://www.npmjs.com/login?next=/login/cli/c021847a-5631-4bcc-b912-207ed62d8fa5
Press ENTER to open in the browser...

と、"Press ENTER to open in the browser..."で詰んでしまいます。もちろんEnterキーを押したところで、エラーが出ます。

npmの認証方式

npmのログイン時の認証方式はデフォルトでWebブラウザを利用するようになっています。 なので明示的にlegacyオプションで、古い形式でのログインを指定してあげることでCLIからのログインが可能になります。

npm Docs