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

printshop

v0.2.0

Published

A little book-layouting tool powered by pug and pupetteer

Downloads

1

Readme

WTF is this thing? printshop is a simple CLI tool to publish e-books with familiar web technologies. It allows for export to .pdf and .epub because why not.

TODO Implement export to static HTML Fucking write actual docs

Installation

npm i -g printshop
printshop create my-new-book

So, it's like InDesign, but for tech junkies? Yup. I got so fucking fed up with InDesign, so I decided to switch to layouting my shit with html and css. Well, with pug and sass, but who cares? The goal is to have a quick, DRY way to turn my tabletop RPGs from a google doc into a reasonably good-looking PDF. Of course, it lacks some pro-features: text justification is no match for InDesign, hanging punctuation ain’t an option, all that jazz. But, hey, if you care enough about such stuff, you prolly already know how to use InDesign or Affinity or whatever.

What should I know? First of all, read:

  • #[a(href='https://pugjs.org/api/getting-started.html' target='_blank') pug docs]
  • #[a(href='https://www.pagedjs.org/documentation/' target='_blank') paged.js docs]
  • #[a(href='https://developer.mozilla.org/' target='_blank') MDN] — this one is mandatory. If I catch you using tags for their appearance instead of semantic meaning, I’m gonna hunt you down and kick your ass. I’m serious.

Contributing If you don't have anything better to do, go ahead. Just clone this rep, hit me up with a PR, and I'll check it out.

How to use this shit First of all, create a project:

printshop create my-new-book

It will clone printshop_starter into my-new-book directory and separate it from the origin. Then, have fun.

Configuration In any printshop project folder, there is printshop.config.js file. It has following structure:

module.exports = {
	name: string, // Project name, duh
	description: string, // Summary of your project. I don’t think it’s used anywhere for now, tho
	author: string, // Your name, or name of whatever Alan Smithee-style alias you have
	dev_port: int, // Port on which devserver runs when you go printshop serve. Default: 8080

	base_dir: string, // If you want to nest all your shit into a directory, use it as base_dir. Default: '.', which means "your project's root folder"
 
	content: {
		dir: string, // Where the .pug files with your content is stored. The default is, surprisingly, 'content'
		preprocess: (string) => string // A function that is ran on each and every line of your book. 
	},
 
 templates: [
   {
     url: '/print',
     template: 'templates/print',
     defaults: {
       is_preview: true
     }
   }
 ],
 
 static: [
   {
     dir: 'images',
     url: '/images'
   },
   {
     dir: 'fonts',
     url: '/fonts'
   },
   {
     dir: 'scripts',
     url: '/scripts',
     // preprocess: _ => typescript.render(_.toString()).body
   },
   {
     dir: 'node_modules',
     url: '/node_modules'
   },
   {
     dir: 'styles',
     url: '/styles',
     preprocess: require('./preprocessors/styles')
   }
 ],
 
 puppeteer: {
   browser: 'firefox',
   revision: '97.0a1',
 
   pdf_export: {
		 format: 'A5'
   }
 },
 
 export: {
	 pdf: {
		 timeout: float // How long (in milliseconds) printshop should wait before actually exporting the doc into pdf — sometimes shit takes a bit too long to properly render and the resulting pdf is messed up big time. Default: 10000, or 10 seconds
     default_url: '/print?is_preview=false' // What url should headless browser export to pdf. Default: '/print'
   },
   epub: {
     css: 'styles/epub.sass',
     default_url: '/web'
   },
   html: {
     include: [
       'index.pug'
     ]
   }
 }
}