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 🙏

© 2024 – Pkg Stats / Ryan Hefner

auto-updater

v1.0.2

Published

Automatically updates your client version when is outdated by the repository

Downloads

576

Readme

Auto-Updater

Build StatusDependencies

Node.js auto-update plugin.

Compares local package.json with repository package.json and if versions don't match, it downloads the latest zip and extracts it.

Installation

With npm do:

$ npm install auto-updater

What does it do?

  • Compares local version with remote version.
  • If versions don't match, it downloads the repository.
  • It extracts the repository, overwriting the modified files.
  • Compares local dependencies with remote dependencies and tells if they don't match.

Events

  • git-clone The user has a git clone. Recommend use the "git pull" command
  • check.up-to-date ( v ) versions match
  • check.out-dated ( v_old , v) versions dont match
  • update.downloaded Update downloaded in the machine
  • update.not-installed Update was already in the dir, so it wasnt installed
  • update.extracted The update has been extracted correctly.
  • download.start ( name ) The download of "name of the update" has started
  • download.progress ( name , % ) The download has been updated. New percentage
  • download.end ( name ) The download has ended
  • download.error ( err ) Something happened to the download
  • end Called when all is over ( along with 'check-up-to-date' if there are no updates, or with 'extracted' if it was installed )

Public Methods:

  • use ( config )
  • on ( event, callback ) Sets the events (use like EventEmitter)
  • fire ( command ) Fires a command

Config

  • pathToJson: '' from repo main folder to package.json (only subfolders. Can't go backwards)
  • autoupdate: false if true, all stages run one after the other. Else, you need to force the stages with the force methods
  • checkgit: true Checks if the .git folder exists, so its a dev and doesnt download the proyect.
  • jsonhost: 'raw.githubusercontent.com' URL of raw remote package.json
  • contenthost: 'codeload.github.com' URL of full remote zip
  • progressDebounce: 0 Debounces the 'download.progress' event (0 = disabled)
  • devmode: false Developer Mode. Enhances error messages using console.log

Commands

  • check Compares the two versions. Triggers: 'git-clone', 'check.up-to-date', 'check.out-dated'
  • download-update Downloads the update. Triggers: 'update.downloaded', 'update.not-installed','download.*'
  • extract Extracts (or installs) the update reeplacing old files (it doesnt delete untracked files). Triggers: 'update.extracted'
  • diff-dependencies Returns an array of dependencies (only the names) that dont match. Returns an empty array if there's no difference. Requires the 'check' command first.

Warning: do not run this methods in other order.

Package.json configuration

"version":"0.0.1",
"auto-updater":{
	"repo":"/github-user/github-repo",
	"branch":"master"
}

That segment must be added to the proyect (local). It is critical that the package.json of the app you are using has a version field (so it can be compared with the remote package.json stored on github), and the auto-updater field, so it knows where to get the remote data.

Example

    var AutoUpdater = require('auto-updater');

    var autoupdater = new AutoUpdater({
     pathToJson: '',
     autoupdate: false,
     checkgit: true,
     jsonhost: 'raw.githubusercontent.com',
     contenthost: 'codeload.github.com',
     progressDebounce: 0,
     devmode: false
    });

    // State the events
    autoupdater.on('git-clone', function() {
      console.log("You have a clone of the repository. Use 'git pull' to be up-to-date");
    });
    autoupdater.on('check.up-to-date', function(v) {
      console.info("You have the latest version: " + v);
    });
    autoupdater.on('check.out-dated', function(v_old, v) {
      console.warn("Your version is outdated. " + v_old + " of " + v);
      autoupdater.fire('download-update'); // If autoupdate: false, you'll have to do this manually.
      // Maybe ask if the'd like to download the update.
    });
    autoupdater.on('update.downloaded', function() {
      console.log("Update downloaded and ready for install");
      autoupdater.fire('extract'); // If autoupdate: false, you'll have to do this manually.
    });
    autoupdater.on('update.not-installed', function() {
      console.log("The Update was already in your folder! It's read for install");
      autoupdater.fire('extract'); // If autoupdate: false, you'll have to do this manually.
    });
    autoupdater.on('update.extracted', function() {
      console.log("Update extracted successfully!");
      console.warn("RESTART THE APP!");
    });
    autoupdater.on('download.start', function(name) {
      console.log("Starting downloading: " + name);
    });
    autoupdater.on('download.progress', function(name, perc) {
      process.stdout.write("Downloading " + perc + "% \033[0G");
    });
    autoupdater.on('download.end', function(name) {
      console.log("Downloaded " + name);
    });
    autoupdater.on('download.error', function(err) {
      console.error("Error when downloading: " + err);
    });
    autoupdater.on('end', function() {
      console.log("The app is ready to function");
    });
    autoupdater.on('error', function(name, e) {
      console.error(name, e);
    });

    // Start checking
    autoupdater.fire('check');

Dependencies