npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@nuwel-dev/setup

v1.0.3

Published

figma-kit のセットアップウィザード(公開 npm・秘密ゼロ)。GitHub Packages のトークンを ~/.npmrc に置き、@nuwel-dev/figma-kit の init へ橋渡しする。

Readme

@nuwel-dev/setup

figma-kit のセットアップウィザード(公開 npm・秘密ゼロ・依存ゼロ)。

npx @nuwel-dev/setup

2 回目以降の実行(ウィザードが ~/.npmrc@nuwel-dev:registry=https://npm.pkg.github.com を書いた後)は、 この橋自身は公開 npm 側に在るため scope registry を明示して実行する: npx --@nuwel-dev:registry=https://registry.npmjs.org @nuwel-dev/setup

動作環境(始める前に

| | 要件 | 満たさない時 | |---|---|---| | OS | macOS / Linux(Windows は WSL2 の Linux 側で) | トークンを尋ねるに停止します | | Node | 22.18 以上 / 24.11 以上 / 26 以上(23・25 は不可) | 同上(nvm / Volta で切り替えてから再実行) |

どちらもウィザードの起動直後に検査します。発行済みのトークンが宙に浮かないよう、 秘密を尋ねる前に落とす設計です(旧版は .npmrc を書き終えた最後の 1 手で英語のエラーになりました)。

これは何をするか

  1. 前提(OS / Node 版・~/.npmrc に安全に置けるか)を検査する — 満たさなければここで停止
  2. GitHub のトークン作成ページ URL を表示する(read:packages にチェック済みの URL)
  3. 貼り付けられたトークンを受け取る(画面には表示しない
  4. 先に接続確認する~/.npmrc はまだ触りません)。401 / 403 / 404 を平語で説明します(「招待をまだ Accept していない」等)
  5. 通った時だけ ~/.npmrc にスコープ行と authToken を書く(権限 600・他の行は壊さない・原子的に置き換え)
  6. @nuwel-dev/figma-kitlatest を解決してメジャー(1)を検査し、その正確な版init へ委譲する(^1 のようなレンジは prerelease〈1.4.0-alpha.x〉に一致しないため使いません)

失敗しても ~/.npmrc は 1 バイトも変わりません。 順序が 4 → 5 なのはそのためです。 誤入力・期限切れ・権限不足のトークンを 1 回貼っただけで、それまで動いていた別のトークン//npm.pkg.github.com/:_authToken)が消えては困るからです。書き込みは新しいファイルを作って rename で置き換えるので、「途中まで書けた壊れた .npmrc」も残りません。

接続確認の経路(企業 proxy 下でも止まらないように)

第一手は npm そのものnpm view @nuwel-dev/figma-kit version --registry=https://npm.pkg.github.com)です。 キットを実際に落とすのも npm なので、~/.npmrcproxy / https-proxy / cafile / strict-ssl が そのまま効きます。トークンは npm の引数には渡さず環境変数だけで渡します(引数は同じマシンの 他のユーザーから ps で読めるため)。問い合わせ先はコマンドラインで固定するので、~/.npmrc に 古い @nuwel-dev:registry= が残っていても、そちらへ問い合わせて「接続できました」と誤表示することは ありません。

npm が無い・時間内に終わらない・HTTP として判定できない場合だけ、直接 HTTPS で確かめます(その旨を表示)。 どちらか一方でも通れば合格にします — proxy 下は npm だけが通り、配布物が prerelease だけの時は 直接接続だけが通るので、片方の失敗で買い手を止めないためです。

残っているリスク(正直に)

版は固定しますが、受け取った tarball が発行元の物かの検証はローカルでは行っていませんnpm が lockfile の integrity で tarball のハッシュは検証しますが、それは「レジストリが返した物と lockfile が一致する」ことであって「発行元が出した物である」ことではありません)。 発行元の同一性は、figma-kit diagnose の「配布物同一性」が出す pkg-merkle を、 リリース告知に載る値と照合して確認してください。

なぜ公開 npm にあるのか

キット本体 @nuwel-dev/figma-kit は GitHub Packages の限定配布で、トークンを設定しないと落とせない。 その手順自体を限定配布側に置くと鶏と卵になる。この橋だけを公開側に置いて解く。

橋は攻撃面でもあるので、秘密を 1 バイトも含まず・依存を 1 つも持たない。 publish は provenance 付き(公開レジストリでのみ効く)。

トークンの扱い(設計)

  • 書き込み先は ~/.npmrc だけ。案件ディレクトリの .npmrc にはスコープ行しか書かないfigma-kit init が書く・.gitignore 済み)
  • stdout・ログ・エラーメッセージにトークンを出す経路を持たない(表示は redact() のマスクのみ)
  • 例外は種別(e.code)だけを表示する(例外メッセージにトークンが載る事故を構造で防ぐ)
  • 子プロセス(接続確認の npm)へは環境変数だけで渡す。コマンドライン引数には載せません
  • 接続確認に失敗したら ~/.npmrc は一切変更しません(成功した時だけ、新しいファイルを作って rename で原子的に置き換えます)

マスク表示の仕様: 登録の成功行に abcd…yz(40 文字) の形で 先頭 4 文字・末尾 2 文字・全体の文字数だけを 表示します(それ以外は 1 文字も出しません)。これは「貼り付けが途中で切れていないか」「別の値を貼っていないか」を 買い手が自分で確かめられるようにするためで、意図的な仕様です。全部を隠すと、失敗時に何が起きたか誰も分かりません。

非対話フラグ(テスト・CI 用)

| flag | 意味 | |---|---| | --no-verify | 接続確認を行わない(確認せずに書く唯一の経路。ネットワークが無い環境での明示指定) | | --no-init | figma-kit init へ委譲しない | | --home=<dir> | ~/.npmrc の代わりに <dir>/.npmrc を書く | | --dir=<dir> | init を実行する案件ディレクトリ(既定は cwd) |