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

qmk-via-utils

v1.2.1

Published

CLI utilities for QMK and VIA

Readme

qmk-via-utils

CLI utilities for QMK and VIA.

This project provides both a reusable library and a command-line interface for generating documentation and visual layouts from QMK and VIA files.


Installation

npm install qmk-via-utils

You can also use it directly via npx without installing.


Usage

Library

Please refer to the documentation for details on using the library APIs.


CLI

npx qmk-via-utils [options] [command]

CLI utilities for QMK and VIA

Options:
  -V, --version                                                                    output the version number
  -h, --help                                                                       display help for command

Commands:
  gen-layout [options] <outputDir> <defPath> <savePath> [optionKeys]               Generate Markdown documentation for a keyboard layout from VIA files
  gen-keyboard [options] <outputDir> <infoPath> [layoutName]                       Generate an SVG layout for a keyboard
  gen-vscode-props [options] [cflagsPath]                                          Generate .vscode/c_cpp_properties.json from CFLAGS generated by QMK during build.
  gen-keymap-c [options] <outputDir> <infoPath> <defPath> <savePath> [layoutName]  Generate keymap.c from VIA files and QMK info.json
  export-config                                                                    Print the resolved configuration as JSON
  help [command]                                                                   display help for command

gen-layout

Generate Markdown documentation for a keyboard layout from VIA files.

This command can generate documentation including:

  • Keyboard metadata
  • Custom keycodes
  • Macros
  • Layer keymaps
  • SVG images for each layer

It supports VIA V3 definition files.

npx qmk-via-utils gen-layout [options] <outputDir> <defPath> <savePath> [optionKeys]

Generate Markdown documentation for a keyboard layout from VIA files

Arguments:
  outputDir            Output directory for generated files
  defPath              Path to the VIA definition file (.json)
  savePath             Path to the VIA save file (.json)
  optionKeys           Comma-separated list of option keys or a preset name

Options:
  -C, --config <path>  Path to a config file
  -h, --help           display help for command

gen-keyboard

Generate an SVG layout for a keyboard using a QMK info.json file.

This command visualizes the physical key layout defined in QMK and can be used without any VIA definition or save files.

npx qmk-via-utils gen-keyboard [options] <outputDir> <infoPath> [layoutName]

Generate an SVG layout for a keyboard

Arguments:
  outputDir            Output directory for generated files
  infoPath             Path to the QMK info.json file
  layoutName           Name of the layout to render (optional)

Options:
  -C, --config <path>  Path to a config file
  --led-by-key         Resolve LED position based on key matrix
  -h, --help           display help for command

gen-vscode-props

Generate .vscode/c_cpp_properties.json from CFLAGS generated by QMK during build.

npx qmk-via-utils gen-vscode-props [options] [cflagsPath]

Generate .vscode/c_cpp_properties.json from CFLAGS generated by QMK during build.

Arguments:
  cflagsPath                Path to cflags.txt (if omitted, available cflags files will be listed)

Options:
  -w, --workspace <dir>     Workspace directory (default: ".")
  -s, --search-dirs <dirs>  Comma-separated search directories (default: ".,qmk_firmware")
  -u, --userspace <path>    Path to replace /qmk_userspace with (default: ".")
  -h, --help                display help for command

gen-keymap-c

Generate keymap.c from VIA files and QMK info.json.

npx qmk-via-utils gen-keymap-c [options] <outputDir> <infoPath> <defPath> <savePath> [layoutName]

Generate keymap.c from VIA files and QMK info.json

Arguments:
  outputDir            Output directory for generated files
  infoPath             Path to the QMK info.json file
  defPath              Path to the VIA definition file (.json)
  savePath             Path to the VIA save file (.json)
  layoutName           Name of the layout macro to use (optional)

Options:
  -C, --config <path>  Path to a config file
  -h, --help           display help for command

export-config

Print the resolved configuration as JSON.

The exported configuration can be saved to a file, modified as needed, and then reused with other commands via the --config option.

This allows you to customize settings once and apply them consistently across multiple commands.

npx qmk-via-utils export-config > config.json

Credits

This project incorporates source code from
@the-via/app.


License

GPL-3.0