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

highmark

v0.3.46

Published

Please note that Highmark.js is in ongoing initial development and exists as an npm package to test production builds and distribution only.

Downloads

15

Readme

Highmark.js

Please note that Highmark.js is in ongoing initial development and exists as an npm package to test production builds and distribution only.

To start up a development server

yarn run server:dev - Builds the files in watch mode and runs server

Setup

  • [x] Install node packages

  • [x] Setup express server

  • [x] Create seperate client and server react entrypoints

    • [x] Client entry rendered with BrowerRouter
    • [x] Server entry rendered with StaticRouter
  • Server Side Rendering

    • [x] Create a server version of webpack bundle
    • [x] Reduce server bundle size by forcing external packages to not be bundled (not sure if this will still work in Ruby environment, was built for node)
    • [x] Use isomorphic-style-loader to avoid CSS trying to add to DOM on server
    • [x] Use react-universal to do lazy loading client-side and instant loading server-side
    • [x] Add babel-plugin-universal-import so babel picks up react-universal properly
    • [x] Limit server-side chunks to 1 to avoid async loading files
    • [x] Add extract-css-chunks-webpack-plugin to get css chunks in webpack stats output (of the client bundle, server bundle is now only one file)
    • [x] Enable webpack stats output (so server knows what script and link tags to send on a page)
    • [x] Add method to push data back to head of page (PushDataTag)
  • [x] Add webpack-flush-chunks and patch it into react-universal

  • [x] Import stats file and plugin to webpack-flush-chunks

  • [ ] Load initial data server-side and prefill page (React.Suspense required)

    • It could be possible to do initial render pass, collect all the promises and then resolve them manually into page headers
  • [x] Avoid loading data if page is pre-filled

    • Data is cached based on resolver and serialized arguments
    • Redux does something VERY similar to prefill the client store
  • [ ] Support handling oEmbed version of page based on react-router

    • [ ] Extend the push data handler to accept oEmbed tags? Then just send that result instead of page render
  • [ ] Move more packages into peerDependancy

Server

  • [x] Directory based page routing
    • [ ] Add directory specific configuration files
    • [ ] Remove react-router and replace with a smaller custom library? (possibly offer as a config option)
  • [x] Serve public files
  • [ ] Redis integration for publicly build pages (by specifying redis configuration in highmark.config)
  • [ ] Add a path for API calls (server-bundle only, does not use the React-router pathing)
  • [ ] Add support for changing the HTML lang attribute

Extra server things

  • [x] Handle redirects and error codes generated by bundle
  • [x] Send CSS/JS assets as Link prefetch headers
  • [x] Send initial CSS as inline stylesheet
  • [ ] Send Image assets as HTTP Push headers (though not possible with )

Images

  • [x] Resize, convert, and minify all images automatically
    • [ ] Additionally create a "sample" data url to blend the image in
    • [ ] Highly extensible per-image config files
  • [ ] Image Component
    • [ ] Finds all versions of image and creates a picture source set
    • [ ] Creates temporary "blur" render while image is loading
  • [ ] CSS loader that fills in url() rules with appropriate image-set()
  • [ ] Scoping / Chunking assets manifest to js bundle that uses them.

Build Step

  • [x] Single command development server setup
  • [x] Single command production build client/server
  • [ ] Directory copy Highmark instead of indivdual files