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

junctions-static

v0.6.2

Published

Build static websites using Junctions.

Downloads

26

Readme

junctions-static

Build static websites with junctions, with one HTML file for each URL.

Install it

npm install junctions-static

Example

To render your website, junctions-static needs two things:

  • A file which exports a renderToString({ junction, location, dependencies, meta }) => string function (which can be async)

  • Your site's public folder, which contains the built version of your app (without any HTML files)

  • The filename within your public directory that contains the "main" file, which should set two globals:

    • main() - a function to start your app
    • rootJunction - your app's root junction

Then, building your site is simply a matter of calling the command line utility, which will load the junction and walk through each of its nodes, rendering a file to the public directory as it goes.

node_modules/.bin/junctions-static --public public --main public/main.js --render src/renderToString.js

Of course, repeatedly typing these command line options would soon become frustrating, so you can also specify the options in a "junctions-static.config.js" file:

export default {
  public: 'public',
  main: 'main.js',
  renderToString: 'src/renderToString.js',
}

Integrating with create-react-app

Integrating junctions-static with create-react-app is simple. You don't even need to eject!

  • wrap the bootstrap code in index.js in a main function, which is placed on the global window object
  • export a root junction from index.js
  • at the bottom of index.js, call main if we're running in the dev server:
if (!process.env.REACT_APP_STATIC) {
  main()
}

While you'd usually also need to supply a render file, junctions-static includes one that works with create-react-app - to use it, just pass the --render create-react-app option to junctions-static.

Then update the build script in package.json:

"build": "cross-env REACT_APP_STATIC=true && react-scripts build && junctions-static build --output build --main build/static/js/main.*.js --render create-react-app"

And now, when you run npm run build, you'll get one file for each of your app's URLs!