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

new-work

v1.2.1

Published

Discover when artists post new work.

Downloads

12

Readme

screenshot

Features

✨ Automagic: Automatically checks artists' websites for new work. Works by looking at a site's last-modified HTTP header or by diffing a specific HTML element.

📂 Organized: Keeps track of artists in various categories via a simple YAML file with a CLI helper.

⚡ Fast: Fetches sites in parallel for fast and efficient updates.

Installation

$ npm install new-work

Usage

Usage: newwork <command> [options]

  Commands:
    <default>                   Run 'newwork serve'
    serve                       Scrape, update, and serve a new-work page
    build                       Scrape, update, and save a new-work page to disk
    print                       Scrape, update, and print a table to the terminal 
    add [url]                   Add an URL to your list of sites
    remove [url]                Remove an URL from your list of sites
    ls                          List all sites in your new-work page

  Available options:
    -i, --input <filename>      Input YAML file [default: ~/.newwork.yaml]
    -o, --output <filename>     Output HTML file [default: ./newwork.html]
    -l, --lockfile <filename>   Lockfile location [default: ~/.newwork.lock]
    -p, --port=<n>              Bind 'newwork serve' to a port [default: 3030]
    -h, --help                  Print usage

Guide

  1. Run newwork add <url> to add a site to track.

  2. Confirm the site's title / the artist's name.

  3. Optionally specify a category (e.g. 'Photography').

  4. If the site returns a last-modified header, you're done! Otherwise, you must manually specify an HTML element to diff for updates.

  5. Open the site with a web inspector such as Chrome DevTools Elements panel. Search for an HTML element that will change when the site is updated. The could be a thumbnail on the homepage, a menu of projects, or a blog post element.

    guide

  6. Specify a jQuery selector that will return the chosen element. For example, a link element inside a thumbnail with the class thumb may be referenced by the selector .thumb a. Only the first matched element will be used.

  7. Repeat for additional sites.

  8. Run newwork or newwork serve to open a list of all your sites. Sites that have been changed in the last 30 days are highlighted with a "new" tag.

JS API

status

Get the status of a list of sites to see whether new work has been posted.

Parameters

  • sites Array<Object>
    • sites.name String name of artist / title of site
    • sites.url String
    • sites.category String
    • sites.selector String? jQuery selector that will return an element to diff for changes
  • lockfile String filename of lockfile to store previous diffs & metadata
  • opts Object?
    • opts.expiration Number duration in ms for which a given site is still "new", default ms in one month
  • cb

render

Render an HTML view of a list of sites, highlighting when new work has been posted.

Parameters

  • sites Array<Object>
    • sites.name String name of artist / title of site
    • sites.url String
    • sites.category String
    • sites.selector String? jQuery selector that will return an element to diff for changes
  • lockfile String filename of lockfile to store previous diffs & metadata
  • opts Object?
    • opts.template Function template function to return str of HTML, given sites
    • opts.expiration Number duration in ms for which a given site is still "new", default ms in one month
  • cb

See Also

License

MIT