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

dotto

v1.1.1

Published

A node module helping you with setting up your dotfiles.

Readme

Dotto helps you setting up your dotfiles using Node.js.

Requirements

Dotto uses ES2015 features and requires Node.js ^5.x.x.

Installation

You need to install Dotto as a global npm module by running

npm install -g dotto

Usage

Dotto has two components; a CLI and a node module that can be used from your dotfiles' install scripts. The CLI will scan your dotfiles directory for installer files, ask you which ones you would like to run, and finally execute your selected install scripts sequentially. You envoke the CLI by executing

dotto [--dotfiles "path"][--installer "pattern"] 

The --dotfiles flag lets you specify the path to the folder containing your dotfiles and defaults to node's current working directory. The --installer flag allows you to set the filename you use for your install scripts. All install scripts need to have the same name, but reside at different paths. The default install script name is installer.

The philiosophy of Dotto is to allow you to write install scripts specfic to each of your applications configured via dotfiles. For example, you have a shared configuration for Vim and Neovim. Neovim recently moved to an XFG-compliant configuration, which means its configuration files should reside in a subfolder of ~/.config. Instead setting up a structure of dummy symlink files or similar, you can write a single install script that will create symlinks to your shared Vim/Neovim configuration files specific to each application. This gives you a lot of control over how your dotfiles should be set up.

In addition to running your install scripts Dotto exposes a bunch of useful modules and helper functions that you may use in your install scripts.

API

After installing Dotto globally you can require it in your install script like this

const dotto = require('dotto');

Here is a list of the various helper modules and functions exposed by Dotto.

dotto.shell

This is full blown shelljs for running terminal commands from within node. Very useful for things like creating folders or similar from your install script.

dotto.brew

Exposes brewmaster, a wrapper for installing Homebrew/Linuxbrew packages from node. After bootstrapping Homebrew/Linuxbrew from a bash script and getting node installed, you can use brewmaster to install all your favorite packages with custom options etc.

dotto.symlink

A simple function for creating symlinks, one of the most important operations when setting up dotfiles. Compared to just copying your dotfiles to your homefolder, symlinking them allows you to track any changes via git. This example

const dotto = require('dotto');

symlink('~/.dotfiles/source', '~/.target');

will try to create a symlink located at ~/.target pointing to ~/.dotfiles/source. If symlink finds that the target already exists, it will ask you how to proceed via a prompt.

Notes

Dotto is still very much a work in progress. Now that I got an initial version released, I will start using it in my own dotfiles. Which should get some of the surely existing bugs ironed out. If you're heaving some trouble using Dotto, please open an issue. If you fix a bug, opening a pull request would be awesome.