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

ula-cli

v0.0.4

Published

ULA Components CLI - Download and manage components from private repositories

Readme

@ula/cli

A lightweight CLI tool for downloading and managing ULA components from private repositories.

Features

  • 🚀 Lightweight: Minimal dependencies, fast installation
  • 🔐 Flexible Authentication: Support for SSH keys, HTTPS credentials, and tokens
  • 📦 Smart Component Management: Install, update, and uninstall components on-demand
  • 🌐 Multi-Platform: Support for Bitbucket, GitHub, and GitLab
  • ⚙️ Environment Variables: Easy configuration via environment variables
  • 📁 Sparse Cloning: Only download the components you need

Installation

npm install -g @ula/cli

Quick Start

  1. Configure your repository:

    ula configure
  2. List available components:

    ula list
  3. Install a component:

    ula install button
  4. Check status:

    ula status

Configuration

Interactive Configuration

Run ula configure to set up your repository settings interactively.

Environment Variables

You can also configure the CLI using environment variables:

# Repository settings
export ULA_REPO_TYPE=bitbucket
export ULA_REPO_URL=https://bitbucket.org/your-workspace/your-repo
export ULA_REPO_BRANCH=main

# Authentication (choose one method)
export ULA_SSH_KEY_PATH=~/.ssh/id_rsa
# OR
export ULA_USERNAME=your-username
export ULA_PASSWORD=your-app-password
# OR
export ULA_TOKEN=your-access-token

# Local settings
export ULA_LOCAL_PATH=./src/components

Configuration File

The CLI creates a .ula-config.json file in your project root:

{
  "repository": {
    "type": "bitbucket",
    "url": "https://bitbucket.org/your-workspace/your-repo",
    "branch": "main",
    "sshKeyPath": "~/.ssh/id_rsa"
  },
  "components": ["button", "input"],
  "localPath": "./src/components"
}

Commands

ula configure

Interactive configuration wizard for repository settings.

ula list

List all available components in the repository.

ula install <component>

Install a specific component.

Options:

  • -f, --force: Force reinstall if already installed
  • --no-dependencies: Skip installing dependencies

ula uninstall <component>

Uninstall a specific component.

ula update <component>

Update a specific component to the latest version.

ula update-all

Update all installed components.

ula status

Show installation status and configuration.

Repository Structure

Your private repository should have this structure:

your-repo/
├── components/
│   ├── button/
│   │   ├── index.ts
│   │   ├── package.json
│   │   └── ...
│   ├── input/
│   │   ├── index.ts
│   │   ├── package.json
│   │   └── ...
│   └── ...
└── ...

Each component should have:

  • index.ts - Export statements
  • package.json - Dependencies (optional)
  • Component files

Authentication Methods

SSH Keys (Recommended)

export ULA_SSH_KEY_PATH=~/.ssh/id_rsa

HTTPS with Username/Password

export ULA_USERNAME=your-username
export ULA_PASSWORD=your-app-password

HTTPS with Access Token

export ULA_TOKEN=your-access-token

Examples

Install with SSH

export ULA_REPO_TYPE=bitbucket
export ULA_REPO_URL=https://bitbucket.org/myteam/components
export ULA_SSH_KEY_PATH=~/.ssh/bitbucket_key
ula install button

Install with Token

export ULA_REPO_TYPE=github
export ULA_REPO_URL=https://github.com/myorg/components
export ULA_TOKEN=ghp_xxxxxxxxxxxxxxxx
ula install input

Force Reinstall

ula install button --force

Skip Dependencies

ula install button --no-dependencies

Development

Building

npm run build

Development Mode

npm run dev

Publishing

npm publish

Troubleshooting

Permission Denied

Make sure your SSH key has the correct permissions:

chmod 600 ~/.ssh/id_rsa

Authentication Failed

  • Verify your credentials are correct
  • For Bitbucket, use App Passwords instead of your account password
  • For GitHub, ensure your token has the correct scopes

Component Not Found

  • Check the component exists in the components/ directory
  • Verify you're on the correct branch
  • Ensure the component has an index.ts file

License

MIT