◆ コード見たいだけなのに npm が必要
  ◆ インストールしてない PC もある
◆ npm install は依存パッケージもが入るので重い
  ◆ node-gyp の C++ ビルドとか入ってくるものもある
◆ Github のコードだとビルド済みが含まれてないこともよくある
  ◆ バンドルされた 1 ファイルがほしいときがある
  ◆ TypeScript とか altJS の場合に JavaScript がない
◆ パッケージのみダウンロードだとこれらが解決できる
◆ npm のウェブページにダウンロードボタンを作るユーザスクリプトも作った

npm のページを見てるときにそのままブラウザでダウンロードしたいことはたまにあるのですが ダウンロードリンクがないんですよね
npm コマンド打つのも面倒なので ダウンロードリンクを作ってしまいます

ダウンロード用の URL は

https://registry.npmjs.org/{package_name}/-/{package_name}-{version_name}.tgz

で package_name と version_name にパッケージ名とバージョン名を入れます
たとえば @babel/core の 7.5.5 の場合は

https://registry.npmjs.org/@babel/core/-/@babel/core-7.5.5.tgz

になります

手動でこのルールに当てはめて URL を作るのも面倒ですので これを自動でつくるスクリプトを作りました
実行するとバージョン一覧のバージョン名の横にダウンロードボタンが作られます

npm-dl-link

createDownloadLink()

new MutationObserver(mutations => {
const elem = document.querySelector("#versions")
if (elem && !elem.querySelector(".download-package")) {
createDownloadLink()
}
}).observe(document.querySelector("main"), { childList: true, subtree: true })

function createDownloadLink() {
const versions = [...document.querySelectorAll("#versions li>a")]

for (const elem of versions) {
const match = elem.pathname.match(new RegExp("^/package/(.+)/v/(.+)"))
if (!match) continue
const [, name, version] = match
const a = document.createElement("a")
a.href = `https://registry.npmjs.org/${name}/-/${name}-${version}.tgz`
a.className = "download-package"
a.style.lineHeight = "1.5"
a.style.marginLeft = "10px"
a.textContent = "Download"
elem.after(a)
}
}

タブ切り替えで再作成されるので MutationObserver で変化あったときにチェックして必要な再実行するようにしてます
適当なユーザスクリプト実行用拡張機能で上のコードを

https://www.npmjs.com/package/

に当てはまる URL で実行するように設定すればおっけいです