Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8833

npm token createの結果をjsonで取得する

$
0
0

TL; DR

npm token create --json

経緯

記事のタイトルとは関係ないけど、Node.jsのプログラム中からnpmアカウントのAuth Tokenを生成する方法で困ってた。

https://docs.npmjs.com/creating-and-viewing-authentication-tokens

ここにあるnpm token create以外にAPIが見つからないけど、npm token createはCLI上でインタラクティブにパスワードの入力を求めてくる。

これについては下記の方法で可能だということがわかった。
意外とお手軽で良かった。

main.js
constchild=require('child_process')child.spawn("npm",["token","create"],{stdio:'inherit'})

ということで実行してみたところ、パスワードも問題なく親プロセスから対話的に入力でき、トークンが生成できた。(トークン部分は隠してあります)

node main.js

npm password: 
┌────────────────┬──────────────────────────────────────┐
│ token          │ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx │
├────────────────┼──────────────────────────────────────┤
│ cidr_whitelist │                                      │
├────────────────┼──────────────────────────────────────┤
│ readonly       │ false                                │
├────────────────┼──────────────────────────────────────┤
│ created        │ 2020-08-13T07:53:39.394Z             │
└────────────────┴──────────────────────────────────────┘

しかし実際にはこのトークンをは次の処理への入力にする必要があり、(これパースするのか・・・面倒だな・・・)と思って、ダメ元で--jsonオプションを渡してみたらJSONで取得できた。
感謝感謝。

main.js
constchild=require('child_process')child.spawn("npm",["token","create","--json"],{stdio:'inherit'})
node main.js 

npm password: 
{"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","cidr_whitelist":[],"readonly":false,"created":"2020-08-13T08:04:16.531Z"}

これならあとはstdoutへの出力を親プロセスで受け取るだけなのでいけそう。


Viewing all articles
Browse latest Browse all 8833

Trending Articles