The place where all things npm will one day be documented
Download node at nodejs.org and install it, if you haven't already.
To run the app locally:
npm install
npm start
Now you have a server running at at localhost:5000
The prepublish
task is run automatically after npm install
. This
triggers npm run build
, which does the following:
- Copies npm documentation from
./node_modules/npm/doc
to./content
- Walks the content directory collecting markdown files.
- Reads the contents of each markdown file.
- Parses HTML Frontmatter from the markdown files
- Converts markdown to HTML
- Writes content.json with Base64-encoded markdown contents AND HTML contents
- Writes views/partials/nav.hbs
The copied and generated files are ignored for two reasons:
- Keeps the git history uncluttered.
- Prevents humans from accidentally editing auto-generated files
When the build process runs, it looks for metadata in markdown files in the following format:
<!--
title: GitHub integration
keywords: github, git, enterprise
description: If your organization uses GitHub or GitHub Enterprise, npmE can be configured
to automatically use them for login and access control.
-->
See an example in content/enterprise/github.md.
This metadata is then added to content.json, and looks like this:
{
"title": "GitHub integration",
"keywords": "github, git, enterprise",
"description": "If your organization...etc"
}
If the file has a title
property in its frontmatter, it will be used for
the <title>
of the rendered HTML page. If title
is absent from the
frontmatter, the filename (without the .md extension) is used.
Frontmatter values can span multiple lines for longer strings like description text. To make a value multiline, simply indent it with two or more spaces on subsequent lines.
The content.json file is served publicly at /content.json
with CORS support, allowing browsers on other domains to fetch all the npm
documentation and accompanying metadata with a single HTTP call.
export NODE_ENV=production