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

poindexter

v1.0.4

Published

<div align="center"> <img src="./poindexter.svg" width="300px">

Downloads

12

Readme

Search engine for your static site.

Powered by FlexSearch

Poindexter scans a folder for HTML files and indexes each file's content by its relative filename. The full index is output to poindexter.bundle.js, which can be imported and searched with poindexter or flexsearch.

Getting started

Create a searchable index

npx poindexter [HTML folder] -o [output path]

Searching with Poindexter

  import { client } from "poindexter/runtime";  

  // loads the poindexter.bundle.json.
  // for custom path: `client.init({ path: '/path/to/poindexter.bundle.js' })`
  client.init()

  // search the index.
  client.index.search(query)

Narrowing the indexable area

To avoid indexing navbars and widgets, Poindexter provide the following options.

contentSelectors An array of selectors. Poindexter tries each selector untill a match is found. Only the content of the first match is indexed. If no match is found, the page is skipped.

IgnoreSelectors An array of selectors. Poindexter removes any elements matching these selectors.

Please refer to the scrape function for more info. Alternatively you can use your own scrape function.

Options

Please refer to the defaults for now.

Configuration

Thanks to Configent Poindexter can be configured here

  • poindexter.config.js
  • package.json (create a poindexter field)
  • environment
  • .env
  • command line
  • API

Title, description and keywords

Poindexter assumes that title, meta description and meta keywords are available in your HTML. Please refer to defaults If this is not the case, you can create your own resolvers.

Custom resolvers

{
  title: $ => 'my website',
  description: $ => $('.description') || 'no description',
  keywords: $ => $('meta[name=keywords]').attr('content').split(',')
}

FAQ

Can I use Poindexter with a SPA?

Poindexter requires a static site. If you have a SPA, have a look at Spank.

Where can I use Poindexter?

Poindexter can be served from the client, your own backend or a serverless function.

How big are the index bundles?

A site like routify.dev with 65 pages, generates a 65 kb bundle after brotli compression.


Example

Routify dev build