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

node-flatpages

v0.1.0

Published

Flask-FlatPages for Node.js

Downloads

6

Readme

Node-FlatPages: Flask-FlatPages for Node.js

Like Flask-FlatPages, Node-FlatPages recursively collects text files from a given directory and exposes them as Pages, made up of metadata stored as YAML, and a text body written in Markdown. For example:

tags:
	- cats
	- roombas
	- cats on roombas

# Cats on Roombas

Please, partake of them:

* [Attack Roomba](http://www.youtube.com/watch?v=vf9wHkkNGUU)
* [Roomba Driver](http://www.youtube.com/watch?v=LQ-jv8g1YVI)
* [Captain del Roomba](http://www.youtube.com/watch?v=Ep80TSVQe70)

Renders:

{
	path: 'path/to/file/relative/to/project/root',
	meta: {
		tags: ['cats', 'roombas', 'cats on roombas']
	},
	body: '# Cats on Roombas\n\nPlease, partake of them:\n\n...',
	html: '<h1>Cats on Roombas</h1>...'
}

Installation

npm install node-flatpages

Usage

var FlatPages = require('pages');

var Pages = new FlatPages({
	root: __dirname, 	// folder above your pages directory
	folder: 'pages', 	// name of the pages directory
	extension: 'md'		// file extension for pages you want to grab
}, function(loaded_ages){
	loaded_pages.all() 	// returns an array of all found pages
});

A note about parsing YAML and Markdown

Node-FlatPages breaks pages at the first empty line, assuming everything above it is YAML, and everything below it is Markdown. Thus, if you want no YAML on your page, make its first line blank.

API

Pages

new Pages(options, callback)

Creates a new Pages object. options can contain the following:

  • root: folder above your pages directory, defaults to __dirname
  • folder: name of the pages directory, defaults to 'pages'
  • extension: file extension for pages you want gathered, defaults to 'md'

The callback receives the full-fledged Pages object as its only argument.

get(path)

Returns the Page object at that path. Ex:

var page = Pages.get('catsonroombas')
page.path
> 'catsonroombas'

all()

Returns all pages as an array.

init(options, callback)

Recreates the Pages object using different options. The callback receives the full-fledged Pages object as its only argument.

reload(callback)

Recreates the Pages object using the same options as during its first creation, in case the filesystem has changed in the meantime. The callback receives the full-fledged Pages object as its only argument.

Page

path

The accessor used for getting the object from Pages, corresponding to the directory path to the file from Pages' root minus the file extension. For example, consider this file heirarchy, where / is Pages' root.

/
	app.js
	/pages
		catsonroombas.md
		/nested
			moar_cats.md

The path for catsonroombas.md would be catsonroombas. For moar_cats.md, if would be nested/moar_cats.

meta

An object representing the deserialized YAML at the top of the file.

body

The Markdown text of your page. Ex: # Cats on Roombas\n\nPlease, partake of them:\n\n...

html

The Markdown text of your page rendered into HTML. Ex: <h1>Cats on Roombas</h1>...

Tests

npm test node-flatpages