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

@roeybiran/distribute-macos-app

v1.3.0

Published

A command line tool for distributing macOS applications

Readme

Distribute macOS App

A command-line tool that builds, exports, signs and notarizes a macOS application.

Work in progress!

Usage

npx -y @roeybiran/distribute-macos-app release \
  --scheme MyApp \
  --keychain-profile notary-profile

Optional release output: --out-dir path/to/releases

Optional DMG customization: --dmg-background path/to/background.png

Fast local DMG preview with the unsigned DUMMY.app fixture:

npm run build && node dist/index.js preview-dmg \
  --dmg-background /absolute/path/to/background.png \
  --reveal

DMG Backgrounds

  • The DMG icon layout is explicit, not automatic.
  • The app icon center is currently placed at (192, 240) when no custom background is used.
  • The /Applications link center is currently placed at (448, 240) when no custom background is used.
  • The default icon size is 80.
  • The x and y values are relative to each icon's center.
  • The horizontal gap between icon centers is 256 pt.
  • With the default 80 pt icon size, the visible gap between the two icon edges is 176 pt.
  • Without a custom background, appdmg falls back to its default window size of 640x480, so the default icon y position is 240.
  • If you provide --dmg-background, the tool passes it straight through to appdmg without inspecting its size.
  • The icon layout stays point-based, so with or without a custom background or @2x sibling the icon y position remains 240.
  • For backgrounds that line up with the default layout, use 640x480 for the base image and 1280x960 for an optional matching @2x image.
  • For Figma, make the frame the exact pixel size you want the DMG window to be, leave clear space around those two icon centers, and keep extra room below each icon for the Finder label text.
  • If you want a retina background, export a matching @2x asset next to the base image, for example background.png and [email protected].
  • preview-dmg always uses the built-in DUMMY.app fixture, skips code signing and notarization, stages the fixture app in a temp directory, and leaves only the final DMG in the chosen output directory.

Generate Sparkle files as part of the same release flow:

npx -y @roeybiran/distribute-macos-app release \
  --scheme MyApp \
  --keychain-profile notary-profile \
  --sparkle \
  --out-dir releases

When --sparkle is enabled, the source directory must include a CHANGELOG.md file. Use ## VERSION - YYYY-MM-DD headings for released versions. The tool writes each released version to a same-basename markdown file next to the built DMG files, writes the full public history to release-notes.json, and generate_appcast picks up the per-version markdown files as release notes for their matching archives.

Without --sparkle, --out-dir changes where the versioned export folder is created. That folder includes the exported .app, its .dSYM, and the final .dmg.

Read More

Distribution

Signing

Notarization

To create a new credential profile, run: xcrun notarytool store-credentials "${profile}" --key PATH_TO_PRIVATE_KEY --key-id KEY_ID --issuer ISSUER_ID Generating the profile can be done through App Store Connect. Learn more.

Archiving, Building, Exporting

Creating DMGs

Sparkle