{"_id":"@benglynn/press","_rev":"26-9bce715b2f94b3a83752d96fbbd6f108","name":"@benglynn/press","dist-tags":{"beta":"1.1.0-beta.2","latest":"1.3.0","benglynn":"1.2.0-benglynn.1"},"versions":{"1.0.0-beta.0":{"name":"@benglynn/press","version":"1.0.0-beta.0","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","publish":"publish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"UNLICENSED","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"@benglynn/publish":"^1.0.3","html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"gitHead":"61a7382417be8a5bfdbd680db9608f9c3a8f5a3f","_id":"@benglynn/press@1.0.0-beta.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-SjWyc5RAk3KmtCakaZz84R4eXgzZQagS8Xqz+cDGXGOCXLo9SnovmEgHzCiIoiQCTDICbWYu7BgXcpn6Rg6lVQ==","shasum":"02c7ec3304ea427df8feb2a5669a2fed8d6ac945","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.0-beta.0.tgz","fileCount":31,"unpackedSize":27008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBuK+CRA9TVsSAnZWagAA8msP/jdC2dwYfV40Emb13GLv\nfk/I/BPq/b+r79IkkUv7O6NFZEHxmMzdcM7pfcfHw4DTrn4qXYtV+XpOxthb\n9wVjAXRyixvCGbIW0/hpo7pL88nC5tQIiNRapGPJtNZV8QMfkrvP2skC6w/N\n6pCxRh3GUFsH+lKtBy8jWhrmkFMWeD6+9D/o4NXfHvBml6WbwNm9mj7dFP38\ndBc7ydqo08u/UoD9qiJUjkgpR0Xy/ti+AxB3R0PLDIJa0EcV7n6R6A+GItUx\n7UnVysDP3KBt4kxX0rmZaixz13UGWZdykHWgSf0kFBNqNalD60e+vD1reztx\n59DS7H4k3wLsxGtgMwxb2QgKt0p3bGdppkbQAfU8lW4dRVEQW0y4N4sjeME+\nJjpi7+ec2M+F3mgd8QAFOLB+h3C0W0IOSZh+EqzjwPvVT0z+qTICVdTrI23D\nnGt8STb+y/iSckK8VI2K6nwGTMvX4Pzq2eKLKE7aoSbS6LzMUbiWey5HspUT\nNeFUKCIHC0Ed0czLeUR6qZb5z3MA7PD2H7O/66pi4+cShFmwsTM9lODD0wCf\nh95t8M0mzGo29Ee3b+MCyd6zSXQyA8mKjiP0IfdhjnBPNwhaxZZYl5TCITdx\nYPqGyr+5/YNkvgdSufWS6cqbOibQK95d43moWtt8+HXF1Z3iRJQjAMkahiH1\n/M0E\r\n=c7k2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCdjaaB9lcHhaDtcAxLUv84pSg4M4tvECa3fPXQ0xUHwIhAOj0vmmxHaiLSyW82OmCgQmEG22RYDCFp+QwWude+522"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.0-beta.0_1594286781786_0.4824315121575897"},"_hasShrinkwrap":false},"1.0.0-beta.1":{"name":"@benglynn/press","version":"1.0.0-beta.1","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","publish":"publish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"@benglynn/publish":"^1.0.3","html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"e4afd8ca7ee0868200fcc5880ab3ed636b3e7015","_id":"@benglynn/press@1.0.0-beta.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-luCeb3M5SzpNA3v99HuIGyD0funNkubLl/B1aCW642z7hS8jMyTC/4X6esc2evQi5oaQ7JNv4IMT0IPdWZPQUA==","shasum":"d656ede855d02fab9a8ce6cbfcfed6393c53aa06","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.0-beta.1.tgz","fileCount":32,"unpackedSize":28066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBvBNCRA9TVsSAnZWagAANdcQAJFo53QMmuAV8sUOwg9x\nQ5SAWKWuvyRicuP1q6g9BZUBE7TvxnyTdqP/Y7c2gTDM4gFGFd5yFPr6shLc\naZU7BtPcZbSXk696qSI8Yrd8pcyhOCY0ZZtrBwNGtqCRN4boDBiGo5pLVrDj\nZEshUUAXmMv7+EL/TkZRoadHx0Z2b9Rs5PdZWRJI8U7vR9bENEVfU21DkSqn\nGvw6Il5fEEDtMJ1z0FXYizpSmfcZS+ZVif4lL+6jtoA9VHXvpe887FAeaKCz\nfWLHi6I5e6toOQfQWxnQ6Y4jWUZTy8X5Iw2Dq+HnmCT7s2PNhx0RtlPlUn1R\nZxt/9mSM0XV699j4cNF6Srhp7+xA7nNhwxtLqyPC6aSE5oKl2FBZ//f7ALJo\nAFfWOL/7JfPNgiOj2CvwGsWdT4+Lf8RAVZmvKUuJC/1jYaN8+XQx5C7eHaWr\nhnidLD7yulv7SxxNfnZWCYJNuRhtr3NPIwDzNChbIEdy+NfAJem2WEOocU0D\nET3h0QtUjrd/CbpC7o5PLLjtvfdlGfZqa75PPZnzwToQoiz4+tVAvS/Ef28O\ntL5N7FH4U/J+6e1v2vqb1haJ6EitgkrTn9C5JiV+qM8yVy+wgO4bOVFBFfCV\nuqNSZvBk77yeqjB/yt2+Dc7v5Fdk29cGR7Yfn/n/WlV2887048rWTlF85a3X\nm9kx\r\n=iZ3q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyiSeCWjolWqI+yF/7nx9HMfogZFMduDLLXCQGXD9hwQIgJTEk1HHNxSxdHJk3pqNHRQcUlUx5LCojdnY6T4ydVB4="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.0-beta.1_1594290252643_0.3429482078040029"},"_hasShrinkwrap":false},"1.0.1-benglynn.0":{"name":"@benglynn/press","version":"1.0.1-benglynn.0","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore ."},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.2","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"d2df0d1dc329c188703e3428dc3b30a4f8b68293","_id":"@benglynn/press@1.0.1-benglynn.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WrdTT8i+jT/viccEVDoJ7WRTbbIW5doRDtim2aPfGYbDRDS7DhTsTbybPPc2ZbqCIRy7B/d9bRMqKwZP8vFlpQ==","shasum":"e6806a5683dad05972feadc0ebc8fdc9319e40ae","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.0.tgz","fileCount":32,"unpackedSize":28055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBwaLCRA9TVsSAnZWagAAcPoP/ixzx3zpCJIA1mxPCh+F\nDNUUdsqEszJ2wQY/mxWD3ghcT5klMq3Tc1jIZbWmDKsQQDe29FQQpbzA0elA\nM2WSlLhYCOwSjXUQGL6HEOeGz2sW9zy7XLE8qyFl8kjDfAhnpjJpp2t+njtF\nRjpJ7QREOdOX4MmmZQI2AxmWvHNtXeYv1stjRrHwLumiMGJPq2ll9PKlG3TF\nkbstTODIrayVxdSXI/1h9c5EvWpmuVAPQp5+pWq6GhZoivC/QH7ZYsdaf59b\n68Wu4d7XgvfZCJwid/XB+Ms/udjc40t8uVPpFCFoY5JXJtGb01eHLtZZKHFX\nb1K4ho82CiWdrvx5P0aNI0HhYYVn1eVSZ/R16dLUhITaOKy6XP8FLDuokKs2\n0EVPpZ3zWODnRHO3ut1phD51sG2lxliLdQhTFDezyHrCqAny/rRlkMyrK6/A\n8t2hYNYhzCx8fVeSceZHoONF+vYqAkftoE5EWOZwSoD7zngHaH7YtjKaUXNt\nsI8pkA6FmeOVSlhSmF2xtzCYofATfs/cgrmWD5lL9hWUo36IjjW9lHBVa63p\nfF60qJB9F7iRMMUZkJDbqogfXipBtaqSklOJTrI21P7vN30OGbY8bCqE3Di1\n1mQM/LTqm34on6VdJM5khKAe1nLiZEKn6jU7l0QSMOrNMbJCumKJXa+oSzM3\nfsos\r\n=FVKl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIErCi7ab3XNCaIu2FFAwEDGy5arKFiHoh7S3OCGNC22PAiAxFTnYEpgda9Fm9l1U4UeI80dRBpZ9LlZfH7hCjIdGbw=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.0_1594295946959_0.5262166042898593"},"_hasShrinkwrap":false},"1.0.1-benglynn.1":{"name":"@benglynn/press","version":"1.0.1-benglynn.1","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","publish":"publish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.2","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"0ce4cd47a91a30c5e09544a2a16b703c5809ada5","_id":"@benglynn/press@1.0.1-benglynn.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-HgLHvnEAmT2pO9fqwmMCAnx3jR694I0zUqIeRftMqo5YDB3mFK26MH0ce54vSwIRD7qJmdYnRJ5miMZSEVW1ZQ==","shasum":"4a44633b8d31f8ef3a6d6df6dccb74eea471184d","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.1.tgz","fileCount":32,"unpackedSize":28081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBwe3CRA9TVsSAnZWagAAEDgP/1luRoQYpka9E/a54hpI\naUY0UBOuIrzc4bzHZnLzC8Do8gqqfr7Z9FvoEBrjk68wG1ARdSnFEH4n6nol\nE47WUex1OqNzd7XWk1lhPmUeY2RjgtwQnw4PPona7UkaW8Hfbo739BRnmJF9\nctn/qNPO/7/WIZjNlZXZhrfdJh42o7gMsUdm/rlRaeAzCSMV5jaXA/u+hcqU\n4/t5ldmW0Peo46UNt4ulDYnCOgsjf3CziRzyD+ODR0VpDdsKloxCn3yn61wn\nqcxlJ6O37JtYicvWGgx0wCFTS0bCWBvY4uBJpeMlR0v+ghPMhdn483AQvaii\nN/Lnd82JYxrQQfBey4tcKxAOSUf7IGkCuxHZL5FXsuvz4FDCRaKvwlTO69bx\nocEIsOJLSMrP8krbCga5skwpvucpvHpkbHbA1CyhG6L7JZWJLuvurS8qSlGg\n1Ji30gAZDlg+ys7XM7fk6GGd9LGmi2Jc4q+JaYXLub0bcpJnTdZ/P5kKbaAW\n7EdRw/cUqmDH+9cHSIbrnJBTGsk/tlR4UVAHhAtUaBVdrqZc4jo6Hc3jZJuu\noPSjrVwO/OrYJquxyLRv/bIJzTLfIEyFBzIRrgzfXdJBYJkZ9XngKCxzqKur\nIaxvRp448E9c2d7PljBQF5Dta4WPnC3pzVNIPy53JkOiOB7lJicBr9VJqItL\n4g33\r\n=nAmG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0OjzuH+rJzCXSa/sZ0m00z8LlvModkF6wdr7kkVo9qAiEAvtYCBXUIGyfPcnMZ6dxNijBPcz4v97NN7+L1So+Hn3g="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.1_1594296247212_0.15716650369614427"},"_hasShrinkwrap":false},"1.0.1-benglynn.2":{"name":"@benglynn/press","version":"1.0.1-benglynn.2","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","publish":"safepublish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.7","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"27609e7d048ccd745c1578ce6d7432a1206c0b6d","_id":"@benglynn/press@1.0.1-benglynn.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-asxVC89Xt1hv3tm3oDb4DNXgkkx70MrwHeAxS/tDNjcakToMhL1q6fyKVdqQcLjTgyAQbEcbHE2ofaoCjJPMtQ==","shasum":"b1a19a21046481aa043cba0d0f2b0de29911f29a","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.2.tgz","fileCount":32,"unpackedSize":28085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBwl0CRA9TVsSAnZWagAATX8QAIFbt++UnqihkdNbXHll\nm22Nm54JGz+pjVTxWfaM1J2MgqvwOeXLijRq6ru3agHEsxyr+fJJFTTO/WBA\nfcrC3uLO5PKySrXOt85M/EgbbmfnvdL8u2OB9Lf4xysu0ULRRxLeq5hHPz5F\nSVaxdjuAAlhoeOgkeJhjB8xAt2vKF4jNLHvpBSYZeAxmBmxe+caanWvKYbfv\nTVAKOvQpQyuRmlxv9rRgUed6UhfYBJMOL8VttW5m+o7xtWaVcIof0v3ff6TS\nKZp4TlZidD95drYKqKT5A5Jr1gu45Sk2GRGl5nHRyxlJvAVdjZYnT1IRE8Al\n1hVHHmiXPtyhZQfvJAWP6li4kJ1YAGONe8PcTpoxPRba3B1osFxCHb2d5wah\nJMqRU6JwSJdTNNJQkZ1DYmvh2UbXcCctW+JHlEIqQcFq3/5OhDFuUA/N3p5j\n1efRH/pcPY4PnSbXS9jxi6Tmkn/cS6KD5vuUJ2IbOSwSymTdrU+2CU0MKqGD\nJPPkbFBkQIR/Jzcwpevx9g1+i84rnX66T8DxylAOtKzWVaPK5C3NlvGFKj45\nrnD4pae445Y0zWnNO/9OiKpR4kiRE4i7vTKeEybhSQCVDmrlkUmZ3Vi0tUos\njwj3krwH/WJHwQJM6z5FOSuXMfT3aMpCh6r8MZlVOawg3xi+bYG25dGpNNJ9\nF7a6\r\n=9uhD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE8WUmfy4/fe5flF6EcBcMD3eAet0UFd7LDtrmnjWdl7AiBGhqStEkHXX7Tsm5MJwcrH/9aSaUdShA3Qt8/B+dXFZA=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.2_1594296691600_0.7191114659607676"},"_hasShrinkwrap":false},"1.0.1-benglynn.3":{"name":"@benglynn/press","version":"1.0.1-benglynn.3","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","xpublish":"safepublish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.7","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"630695e4c169f242355702cea413ac9d7e0d18ea","_id":"@benglynn/press@1.0.1-benglynn.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-+qo8kUPH+jjXm4tyO+MSZFohh0vYoLku4Dyw3RP2/lOS05nGg4z5ZBaIeeCUQTwwfKuZ8ESYXXkWy3JteYuyVw==","shasum":"f8c4f1787e84f817eacb14d3d514e682ec531956","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.3.tgz","fileCount":32,"unpackedSize":28086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBwsICRA9TVsSAnZWagAAgiIP/jeRjrBCJgTDIWE6N1/6\nqUPSZIHo7ZoeWfByrzI8FDszqciLDKiBBQgxmnHAG1F3hE5wGdic/sE/e2W3\nPqO+UdxInUhfubbSjoNfGG7zGboorFPxwABsLA9snSPcHhh7Ds7Ny6G6ATrj\nuIE/HPSdZNcjRtZQ/r2CEtYnNMAZ5i/QKH+n6beSTCh9i6TI8AXov72AbwaX\nPDaZDhKko5+YGVAJ2hc3qURRlZ6hUwSuWJj30akKra7pQuaOzmyYlX8RcFGv\nEf42h5UiFzv61cNHOl3x2UE79Trcj8gqLAOp63Ai2+bvZD5tJ7yl9O8/ucCQ\nSce4sXojc9UIeU+PDNrJZagB6AFu+eCsUJWSb1rzCQh/IDjag90OC/TzIRMO\ntpWIMs5Dr7mNF6zYMNgwb8qtgXblugfT9R/iraF1yKC8W65fyzy/ng0D3MV0\nqjeqEr4HX8faqXgACoRN1waIJ/BMhNfw25kgAOwFaDiT2t9qU3wSxWtwTwas\nggAQ2ZjqYUtdJwynYeP7MgpP3ZQTTnwlptJmy1OiS1r3MwR9erlEFeukypxy\nPTcOxea6FeP1/YgeRKmSPcJcB8MpMmS6CAZXdrtPEXhq4djeqHU7sF2Y9Awg\nk4m+Oq4wIh95rkzaCaE24t4zZPh2QcpEj7YP7aImB771AOLuYAvlRkBm0WOX\ne/jn\r\n=vjXn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrklh7vHfW2idyKhdpee2rhlCP7ZqfJzkmYnDWcVWKlwIhAN7NVnRjyLm6nQOqqNe2BzzqgDL0cNEqOE7TQviFuSrI"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.3_1594297095605_0.8992521089322909"},"_hasShrinkwrap":false},"1.0.1-benglynn.4":{"name":"@benglynn/press","version":"1.0.1-benglynn.4","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","xpublish":"safepublish","simplepub":"simplepub"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.10","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"faf481d5fc4a53b4f31fcfae9b7584c31cc5d89a","_id":"@benglynn/press@1.0.1-benglynn.4","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-mX2/jPaEnTRzXDeNpEkmj2n6kPuVHQvK1xGD+gxz6BrGl5LwkW1Q+4Uk495igpVCaQwKxiaQ2l4aNV1vpP7y5g==","shasum":"322a3418a06751f168e2b994f982ddc4c2977c23","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.4.tgz","fileCount":32,"unpackedSize":28117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBxZyCRA9TVsSAnZWagAAuicQAJofqSCItx0PuiZ8iLAU\n3W6bf8d4xz5ZOYmZN+HQKdB7lwap4yQIj780raNrsdf6mt3YPBNHI0+ixfMF\nY5UCJpt4xBuA8n8yC9FTlvrdIMMDnY9dw3vQ7I9w3nbFUfx4oszOiNPK0nxG\nArTGRZBsUVl78tmKMYRab0m0xx8ITfYGokT3285BKnGfLnNMSQhwkrPtdkPV\nVh2xRt+tJt/lCdhhZD8CrOHZ0/Wxj9Gm4zJR5QhMNgbLIB1V7C1ZzpvNtzoe\nK8XgNM36mUdaUlpk8r8QBNZ6lie2WEY5htLBwwz0Q4z07Pyku7rkTHlN5Mv7\nE3vH/8D+kMvpTHbB4ROyPzymvtKbgQ8FkkxkTzWitetN1Fy3bJaKZjdbHhei\nrCXgmquNxASvvMZNKjom/tet21UBkIrRLUnLFD1yB6SY0rWo5/WtHTWfdhaK\nfzId+tE8F7QsQQ4mptM1CbEO1mc9C06KmKsWvbzKWDoWO7AhsBLvB+F2ZTPk\n6WXgYTv2cSG3Vdo4AcmhJhV2CIpnxVIzNSB/38xyAAhS9++8uO/e6zH/7IeN\nVd514FTSDmEngDhCgRSaCxTPlxvqY5q+F1MI5d+5hhvTAC2ACMySdRUmt/YE\nl7c5wsVjftw/S58HFdLgIsTpY89KPTF9SY8LN9LlIX9T3/7YYF9w/hvfkZED\nE3G9\r\n=LuMm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjlQrhdHdo5Ptg4cKL7I0Wes2P9FMBYzXgAeYU0SDsFgIgVp6n3F19SSihZ32wd1k8m9FBMYhoflOOUIaFNrLCP7I="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.4_1594300017565_0.3591339779094713"},"_hasShrinkwrap":false},"1.0.1-benglynn.5":{"name":"@benglynn/press","version":"1.0.1-benglynn.5","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","publish":"safepublish","simplepub":"simplepub"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.10","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"e5557def0af10af49ba685c551fd553951e5a959","_id":"@benglynn/press@1.0.1-benglynn.5","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9abBjumnTXZVeoBS34Sx9RkOBMt1M/IP/n3N9LgDCzFVcNcsrN7FeAt+DzamR7o+eVotWlTl+4go4AnUmZpthQ==","shasum":"1cd0956ab16930ebf3b04e4bc05ad614d92247ee","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.5.tgz","fileCount":32,"unpackedSize":28116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBxcJCRA9TVsSAnZWagAAPmYP/AlHQqH3h0gIwm9cvqZO\njYiCCh7WUbTWP/kcQu0i7gQU3Ftsn7BUOnWLQGVySQz9YB+O0v+E8Qz0CyVX\nHk1Iddt8a9XO6txaFNj/t7JlMA5YCrYlG1hnbTeuvOG68Yd70vqbyDvb+C0/\ncIMDfNQ60d3poX/EQWJxjLJe7/IoeMIgmY9Txuiuuh7dC7Rzy+XVSC+6YEuu\njDJHHDHLhU/PlF86E7Of2+UUht9KtoMqq+D+wlrwHZ9F7CkOUOY1+ImWYzw7\ngbUd+WbwxVt/iEUk0X5CCkacEuEoorEB9+MtbGfsQcc/7c3fKx8NDwdqhPQc\n+zmlDEGHcpKY3eEoLQXKUwKUUpHO06n8o6b+JmGSilLluimnATeyTczPChh6\n6mlQ08lHIjOhVDXwr7QSOvAo7AQ04A8IPkgvjmNnlhAEMjJMx8HrxJNISsOT\nxNPDE5dKmo/G0IM+5qOQ2VZgUvtzZqpK1Nh3gciEc0TMgC3Y43wAcFOU0Pui\nquL7qxmhSee84XClxoZivQ4hHNYwsNzjJEeHPWe11DFq1tR3YX/lRzv8jmrp\n1m87zbBQ+VBxXv0ZPTvE5wWlZnpbp5I1g720/BH+lU8jAwfQ+t+OadAtxtW6\nmrEnuq/Q322O3gd8hjCNGL/AhsxD8oGK5smxWA3/W0xGtgN4kygr2XP3qjCv\nHErH\r\n=/shs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDdi9XbBW38cztIdOSFYb7NsiAjgZgLTH58e0dtIb8DjAiAB65ZXryUuRoyJg9ePLddfwoP1SggTSGujtq9Sch6Hrg=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.5_1594300168628_0.629181114986392"},"_hasShrinkwrap":false},"1.0.1-benglynn.6":{"name":"@benglynn/press","version":"1.0.1-benglynn.6","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","publish":"simplepub"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.10","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"bee0b8ac2e2a70f8685e640a1f791fa14d9b3389","_id":"@benglynn/press@1.0.1-benglynn.6","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-stasVAKZovNyasLkh1kCJsKdtgtovVMVT52GKKKE6h0stSeNWriGA/Ywru/2T6elJvpWFM/mQC6VL8L24mdowA==","shasum":"c3444c2eb5a2ce9ad977ba87175ff75b2fce1563","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.6.tgz","fileCount":32,"unpackedSize":28084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBxnuCRA9TVsSAnZWagAAZ0AP/RV2E3EHSes9yUycaWm8\nWcxqpSFpzOXztK5r8n1/Wi2dFCQFfjBdc+9vAiVL1v3zoU1aHbJpEzz33uO0\nxZdVcbuR4zeGcQt2Bc6k5hdp5QfwURbVfSt7J63dvNbtJUQKQZenHzi7yYkC\ntSTRPV0ApikQweAt8ljDevxYEMlt6ufgJkRWMov5+vTM67SEijVvhq2nGllD\ndDz7mciCp79QSH7ghE4CwlppTpI8h4XHQUFuCVhbjicSWA4qCqG1ePZkIQ6m\na9OIo3xFAzkSWD+uxSyFmncXNuNjo/Gf5aZdyl/HTyB1R27ZUB+8MJhNQr7y\nLqvKW+QL0cEn+zZeDfiRP9keONEfFF8GFIHGTX9zOUI00L91lAPFm7UPLPz3\ncTvO4Ce0iu05LhV2O2jmlPn/P4/HQo9KSUMCgqhtXFpIpxACBhsDHjNlcg3u\nOy8ShwvEkTyEHwejiqSAvFZZe46YCGfXHmdAnmaoT/7THjci6rThl+KDPxX8\nQITNGr8c+q6o2s9bgTckvvEQtY1RTK/gZEw4BLkMNmUMSh1H7/fSfxJzaIH4\nH2z+KbQuMwREZRU+VrUh6Q9YjBtOryYpk2MEngJMACVzCFs21Rg64nprWXEZ\nNBKIaFYMXgqclieK5RMcyDB540ecQmru5cXG84yCv/4GM7FdS8DsKDBFKN/y\n4IBi\r\n=5b3l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLT3sLF++lAxWInwWMv69J49EeqV1UqdDv3NFy7Q3+EQIhALjBnfeA7m7OMYYkEB36sm4b9iAg0HPMmDgza7F5By1/"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.6_1594300910260_0.020045770273439123"},"_hasShrinkwrap":false},"1.0.1-benglynn.7":{"name":"@benglynn/press","version":"1.0.1-benglynn.7","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","publish":"simplepub"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.10","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"c5ce258090b9468844337e54b782446d62ac16f3","_id":"@benglynn/press@1.0.1-benglynn.7","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-v+noc5tXzccFHFqYuwqL/k+O/wod61C0pHmpBPPYvxiD3M0l7K3VfKM873aW4Do4PTQAQxmPEMMcHz2GAdfz4g==","shasum":"d27a2e70544435e61335fca14d440c41b7d5eac6","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.7.tgz","fileCount":32,"unpackedSize":28084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBx8fCRA9TVsSAnZWagAADUgP/jhTwPXfhsP0zCdABFQB\ndtnG+vdWqFTfJ19GsesY2pmFZ2WJFhJAg+sOXqA7b+Q4y0okbTIcPP+VCYeI\niHobaSCsjSrZOEibgO9ekoAlsEYXGsYxj4q0Hm2yRO+DmLczJ1TadLl03oRs\n4HrMME+bFkdswy6aF3vSxMe8usFFODJ00y8JwGmAsR1nXFCEKKS2MLTgdSkH\nR84OXIAdG57wCZRZunl1toXNLJKNwKqzlsug9MvIL+yK2edjlD58cNndmzpp\ngMsKntArrUdAQ80p5ZG3fFayp4w/lG8SZv881I3iJn0DP+oUYIFlrYKDMCgb\nTZsoMy5V47Dw5EIY/rMh8YjBT2fPYfeCg/UXXyRjP3bJFIAP+Y4WOQkXUlDw\nSksAXQU5DjewbaYyiBwnRJClPE8Jk7w1TtvQW/BnruqdVAD1dfkk+rlD8xS9\nHUP5KC6hSo0y0N6vY/72zZnvj33rwk9usHZDCuObyouqCAB3YCQ5nBy3BjUu\nyf3zDSfRsoCJCTsy6T2ruj9fvJl1JmBusrUy8/A5bJkcRe5VLNax3TVQNkhm\ngft+wU9KuWxYW9gwimeEuaWfkrAY2UGcP/6jMZhFMRYyYjQqiKmK5lr72aAf\nZaglISioVuqLkOM9pxxVpJ+s83JR+yMeRl2xTZqv6TA4Ly1a7GdDJtsjLfic\nlHHv\r\n=PGbd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnZjZaOgG14p/CbpShk7RbZTGL4BBIGoNg9tK6+XZeJgIhAIJScw/gLskrTwnoCqvIJdmrgHCXoZUiidt8IBFYqMiB"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.7_1594302239510_0.3310485590292471"},"_hasShrinkwrap":false},"1.0.1-benglynn.8":{"name":"@benglynn/press","version":"1.0.1-benglynn.8","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","publish":"simplepub"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.10","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"f8ff1ad8b7820ddaa7ce5ee535c9eafa6feebed5","_id":"@benglynn/press@1.0.1-benglynn.8","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-GELWZTBFoT+ZMjOm/NXlkzbuiQNCWbWNVqKMx/odarI5HdreRAnGkP7NiFGFbAQ1JH3Z0/wAwo+ej5p7Vel3kQ==","shasum":"cd704706a4cf2b1b69201eb4b51256983a1d00b2","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.8.tgz","fileCount":32,"unpackedSize":28084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBx9SCRA9TVsSAnZWagAAbhYP/3dNh+u/oOIfIdjtLJCX\naMxKe0DlDfNvDJV0aPhQTuVqI+G8/yqJWrEOEftaaV2/0J/DUkwsAEoSt10T\noEclGLjqWHzCdfNAoc8MTzifb2XUGHCx2Mkq3KEG/VbzdpRcF+Pakm6fOVdE\nzAYCUPTpc4j4ToTVkZJRSoZEcDEosnADWVWRnVG5E9/XY3U9k6M+0q3PtWWH\nxQ7G8hU/MWZNB8AySm/g4OxqsR0X6RUngiY/qOL81lEnbj10Y4c6VMVTIcnH\nRjeX0n73G7JP1J2/k0IY/TXKuegoNifWK4dfr4GaC/7V5VKF3a2IdEN5ZTy+\nzViM8cm7N1eVC2d7qccCIVvI7+QXK086DJVywvDgXwSNycnYrA8dEZPh7gIl\np43cgXGDSc0hbNqXuRwDpIbFeEtQm+BqwFbexdftcgQ6Uq0ldAF3dfS3ckhr\n248OPYtXA9+uCvEuSdroNZBQlzR3g7PxAQQXmw0OHpH/3yxWDpbiPMIj0Ghk\nynnhOAnkKwE2D80jtKi4zJYkrUC4FfdcQUDpmKXLWAMT0hVWnI+B/66XcGZ2\niHGKw1DGDsSbicwSRMtFnIjTaKEjJIpKswC+UFCfIB549F8nUja8ZgSSe24U\nFDeQpCCkSgfJWkFeclp/YJ6JbnWFFtU+4rO8UcK67F6t/k7zbxsAskCbqcH6\noLqQ\r\n=QXLL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFzg2v9bYQiw6HgcT0NDa7+2k0UEObUKfno4Ah6jg+DoAiEAgRu+WWxAV0D3CxUbvmGLXJG9pI3u+l5wkNp3+IQp6g8="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.8_1594302289768_0.006153015454395394"},"_hasShrinkwrap":false},"1.0.1-benglynn.9":{"name":"@benglynn/press","version":"1.0.1-benglynn.9","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","safepublish":"safepublish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.11","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"593ce893adbd33cf17fcd38f2720358a3081172d","_id":"@benglynn/press@1.0.1-benglynn.9","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-sRtHDYhRGDtRLlNOM/c2zAB0NkcL+ymatwjPkuXzi+IFG6DDTQ+IfHU/cUTU3XWGr1keQSPvm3yglq/nbPPMqw==","shasum":"b749f1831521dfd89182b1baa575d76e0f6210a6","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.9.tgz","fileCount":32,"unpackedSize":28090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBy6BCRA9TVsSAnZWagAATmcP/iNxJxarKwCo9y5IZ4Ur\nBcQgq/TFnOBQU6c+TR2fHmbpODzS+VB4mCFH0GctwKX8iwgcf3sOELaPfwMz\nXmqTVTI+bQILIleWXzwwOcXbEcJkiDKL9EphSj3clreXaWfgEotbPYbQDLxx\nUTJ3+l/TKbk5p58dhXaQC8vCfy1tilZ+1ASTxhKNZS9yhzoB8qS99egk6szs\nAeccEi3Vm4a8GuJOXQynoBM2IyElSk3BF9D5QD/QZsMvOkS6YpuPRXjkLVbp\n5zzRv2TWG12Oydc4QZn3cFpKdDTQkAsKI+7vp3l9Sj4vtQpr0GnyYz4ZIV5D\nazHqHG+/3Qr+nLIvdGiSehR8jnc4r2Y0KnjUrWejOpTh0Mpy/q9EVnkCdlQL\nHY1RKJfUx99A2Le41OJjKdmbnrmqiA6GsyaTB1X2oLwolTf4iS2JjrWEoEJm\nFrUyhToj5shdhopHuT+yxXmUomWhPu25lfllwgPIdU/DuSFej7iMnGykL6me\nfhuHyCHBDYotwxlmalU+vBTn10W5Vl4IWrm2F6Sjk2OLE1eUwC6d8JYoZzTQ\n47j94ljqpfBAdN3K0tEklkEhlY4aiDCxTd0IWSKkUYWbmAsEfO0azn17lsBY\nMSKMozslY5KwVWw/Yc/PNeNvYKM52clUNQXy/dAyxXDvAazpqI5VP3wJ1aA9\nuH8y\r\n=4ZPh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICPSnjK5p8JMaiY/cNACbWJKshMABFzdDMvzaBZ8g9JdAiAHuNs4ycmoa9sqAtm5+xzWakBgMURjH3dvY0j3xqUfzQ=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.9_1594306176889_0.9757830789400985"},"_hasShrinkwrap":false},"1.0.1-benglynn.10":{"name":"@benglynn/press","version":"1.0.1-benglynn.10","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","safepublish":"safepublish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.5-benglynn.11","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"fd79182610faca44c30962b415fd0f194ef17bc2","_id":"@benglynn/press@1.0.1-benglynn.10","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WHQNb6TyqEBbV3tXSDVkUqC+1IpcYQ8/ngv0jpTp06ALhqB0plkYN8PZV1pbabNZctrfHSLjmNaGhG5cCvetYA==","shasum":"3b302a57334005020c61ddf06483afc22243308d","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.10.tgz","fileCount":32,"unpackedSize":28091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBy6/CRA9TVsSAnZWagAAZTYP/RASreR3o29xDq94MHAf\n9L1bJ+VhD2uZLew7HgnfnSEeuozzTPl75excvYFxZOioGsHj2ew0N7VscDUo\nm1VdySdKKTXcuhFTVrEBLd5zoCf8KhQnCKoP6WcGnToTDqFwafxOZhrxLlmT\nFultvDAkI5lBUTO3421IN4grufvWVtNsfLBThgEBPPCooktG7Hr4AAuQXh+6\nDPiErKc7NBZpDKhf6Tt7wG5PZqpuDVR1dP0ObNYb8TFwq75Hq4xoah2HQ4hq\nqaaPl1SfjS8CkR0LjqUxUVzH2KiZm2HS6rU6a52KON/vOmwpgQVHUvaPxtiO\nuP7Lw4028GO5ivFEjIPVrCWqWx+97ctcvGrrYJlHAcQEg3FYFasSaNjGtruI\nih6Il/JHX/RHbeGCZ531agibCq6sR6v92rpi5+hvG9ci+7sv4Wl2ban4qrOj\nlprB8tCUJDINfpQK3/gGGIfdATqBAoM3esjswkggWBN/JZXigW32CxFOhtrX\ngC6h2CvvFAfHymgh11/WV1coYbFv4cWHUXY0yj3Cav04nqoDyy0klZcO+wIj\nhFMjL6Tk0Pf/lO5KiaK9VmKpaoER+3kQm0LsGngqMKT6ObAZ7xweB3LqPoYf\no+pA32ZnFDWw7Lb1rtP4U8guINPTj+xTTj5IZnstnfL2X0gybXeJyOGDk/un\nZJ9m\r\n=DZLc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDtIGnQ7ku7ENqnCmpakWpBnf/EnSPnoPI+XRC0OpRafAiAZCG1ra4sQJ0eycgD+Npb0d6/xpcqbNZB3TaTwWiY1uA=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.10_1594306238973_0.21999056294011932"},"_hasShrinkwrap":false},"1.0.1-benglynn.11":{"name":"@benglynn/press","version":"1.0.1-benglynn.11","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","safepublish":"safepublish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.6","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Node.js%20CI/badge.svg)\n\n# Press\n\n## Overview\n\nPress takes care of the HTML in your static webiste production. It is focussed,\nfast, simple, and flexible with an emphasis on developer experience. Press may\nbe used directly but brings the most joy when integrated with Webpack live\nreloading.\n\n## Quick start\n\nPlease clone and play with the [Press demo][], these docs will make a lot\nmore sense if you have something real to experiment with.\n\n## Your source\n\nFuel Press with a hierarchy of markdown files to determine site content and\nstructure, and with a collection of templates to determine presentation.\n\n```\nsrc/\n├── markdown/\n│   ├── index.md\n│   ├── french-press/\n│   │   └── index.md\n│   └── tea-pot/\n│       └── index.md\n└──templates/\n    ├── layout.pug\n    ├── home.pug\n    ├── beverage.pug\n    └── page.pug\n```\n\nPress parses the markdown hierarchy and builds context for each page, including\nsite-wide context such as tags, and page-specific context such as path. For each\npage Press then chooses a template and compiles it with that context.\n\n*Press uses the amazing [Pug][], but see [#28][] for other engines.*\n\n## Your markdown files\n\nMarkdown files may contain metatdata, a block of YAML delimited with three\ndashes. Use any name you want to here, except for `press` which is reserved.\nThere are two names which have a special meaning to Press:\n\n- `template`: the filename of the template to use for this page. If ommitted,\n  Press will use `page.pug`\n- `tags`: a list of tags that add this page to a site-wide map of tagged pages\n\nHere's example markdown, the metadata is right at the top, followed by markdown\nfor the page content.\n\n```yaml\n---\ndatePublished: 2020-02-17T10:42:04.053Z\ntags:\n - article\n - beverage\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## Compilation context\n\nWhen compiling a page, Press creates context by combining site-wide and\npage-specific data. These properties will be available to the template used to \nrender the page. Any generated names are namespaced under `press`.\n\n| context | description | example |\n| - | - | - |\n| `press.name` | The name of the md file's directory | `french-press` |\n| `press.path` | The site path to the directory | `/french-press/` |\n| `press.html` | HTML created with the md body | `<h1>French Press</h1><p>A d...`\n| `press.tags` | A site-wide collection of tags | see below |\n| `[name]`     | Any page-specific metadta from the md file | `[value]` |\n\nHere's the context passed to `page.pug` to create `/french-press/index.html`.\n`press.tags` contains the context (except for html) of any page tagged with that\ntag.\n\n```javascript\n{\n    datePublished: 2020-02-17T10:42:04.053Z,\n    tags: [ 'article', 'beverage' ],\n    press: {\n        name: 'french-press',\n        path: '/french-press/',\n        html: '<h1>French Press</h1><p>A device for brewing coffee.</p>',\n        tags: {\n            beverage: [ /* context for all pages tagged with 'beverage' */]\n        }\n    }\n}\n```\n\n## Webpack configuration\n\nAdd the Press Webpack plugin to your Webpack build, and point it to your\nmarkdown and templates. \n\nYou may have functions or constants that you want to be available to every\ntempalte, add these as `extraContext`.\n\n```javascript\n// webpack.config.js\n\nconst path = require('path')\nconst { createPressWebpack } = require('@benglynn/press')\nconst filters = require('./filters')\n\nmodule.exports = {\n    mode: 'development',\n    entry: { app: './app/app.js' },\n    devtool: 'source-map',\n    plugins: [\n        createPressWebpack({\n            markdown: path.join(__dirname, './markdown'),\n            templates: path.join(__dirname, './templates'),\n            extraContext:  { filters }\n        })\n    ]\n}\n```\nPlease have a play with a working example by cloning [Press demo][].\n\n# Developing Press\n\nRun the tests with `npm test` or `npm test -- --watch`. PRs welcome but it's\nearly days and the code still moving around quite a bit.\n\n# Under the hood\n\nMore detail coming soon on how to configure Press dependencies [showdown][],\n[prism][], [html-minifier][] and [js-yaml][], Also how to use an alternative \ntemplating library.\n\n[showdown]: https://github.com/showdownjs/showdown\n[prism]: https://prismjs.com/index.html\n[html-minifier]: https://github.com/kangax/html-minifier\n[js-yaml]: https://github.com/nodeca/js-yaml\n[Markdown]: https://daringfireball.net/projects/markdown/syntax\n[Pug]: https://pugjs.org\n[YAML]: https://yaml.org/spec/1.2/spec.html\n[Press demo]: https://github.com/benglynn/press-demo\n[#28]: https://github.com/benglynn/press/issues/28","readmeFilename":"README.md","gitHead":"8ac4a44b48c08d329368bdcbbb8f46755d350c40","_id":"@benglynn/press@1.0.1-benglynn.11","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-rl2dXJNXSQ69Q+JGQqdU/BLwMBPLKpvZzPa5wr6rstjpKPHy96bvoxr3B1ZjoGQSehmHyAA0XptvPgVMgGtl2Q==","shasum":"20db904d3a2c8476d89f1dbdd5765288ab5fa51b","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1-benglynn.11.tgz","fileCount":32,"unpackedSize":28079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBzhKCRA9TVsSAnZWagAAoyQP/jXvinAEF63LR5R+3mGx\n70IjNPb6XjyBSgc9vxT4MUd8Ukdx+l7C++Ey5tD1REYe2337m2itlwePDvWR\n84DAOWuCRA/DJwzi0IiwGcV6gjrXgs+suZs+wanRgOspVYMfGMfFdzGxu+7O\ngPPHaSzOR2JRqcpcsgenLKF+L9LHf5v/YjMyuCirb9xnX36tcplOmwxUQY6n\nf13o7+E/UVr+Zd10OxWnSeUa495HYjUMiVDSXQHj+3bQoC17vi613mFiRuye\nk8esIYxENzMlcdprQXwx5v7MTyYSfCkjZqiRh2C/MbyRq8lopMT+x+29tys+\nkq3IlHOFK+EHxBYJi+oWZneXtxWDsu9NHWHKdA/Ga0mb9hz7csoD/3Cp0f/G\n1keQLROAzqNaHAunEBqkt+iK5Nyk38LWdrXo2rI84j+v7q9Tz7J5M/TKqzbg\nMSGfdDYW4UQLfoPcUiatY8OeT4FiYlLMbho15u6l2H4YZbB3/4zS+GGlC8QQ\n51tj3U1awT1z0OqC1Sie9sJm9CtiaPOZU4wP2P12TI/Hy0IRmzCQ3Zodj2Q0\nhJRWMwI0YKyqZWRsLUgKze6C4g0bkFb9zWZ4tyxFJDNjW21Ob0NnH00fl00e\nKlEFYl5V/w3f4cke3ThamFsxOo7agGB7JRQfC11JNtugoNbsHdC9SZxSEJ3P\nALig\r\n=pogZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGsUrZuzLUEuM28SIZ8ZN/2v7WoWUlW1nRQHr8gsm47NAiBj9luQh6tq7M8m6IBsqX49OfBSEhXsnuc5W9CiSv3cMQ=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1-benglynn.11_1594308682185_0.7997070319222943"},"_hasShrinkwrap":false},"1.0.1":{"name":"@benglynn/press","version":"1.0.1","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","safepublish":"safepublish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.6","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"gitHead":"f4c9c6fbe3fb3cf406eb5b31d6716736dc4267c1","_id":"@benglynn/press@1.0.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YJsfP3tEFQm2eYOB1LzUHEsnGAk95lsqR1X6pBYA+VZAEs0broaSE6+/t0CeLPzGhmPITpwVO9aXZ1Q5ur0Osg==","shasum":"1fe257f9edb32c751ba9b1bc8e635aa64ac0d9a7","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.1.tgz","fileCount":32,"unpackedSize":28067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBzmrCRA9TVsSAnZWagAAUv0P/3Yy8CZ/TlkeXz/8EkaV\nOz47gibhG39Z9HaqeAkSZB8azLyO0dGeSE4UagoJjo7Y0YHPhY+0Iz1s0tbY\nuCLB8SPSzmXFCA4vK/yflLUSlfDqzJsKfA37mlG/ju4WuMRDxj8VcZM+hX2Z\nFp5I3PEujDj296RKSdfzUgWWfandLEtrHr0PB+pHuZO1cD4styMWKvWyFVJF\nUFb70EyZjUtmC9PaEvFhYMYLO1jCrREpwYjl9wGPD5S1Pdg9y6cqo0OeHDlz\nj+CoOM4Z0CBUFSAZIE+RNd90QMaI1EC2BEN5PYzuyOQAh+BU3kGsElmwyMA0\n8GiQBnu1zrsaem5n0wKgeRZLjK0qwBbwCty1WqVbznaSyxyGthGi8rv58Mh0\nNW2uuQC7uoPdfV/HxPlBeJUcO85P/SIwCZ5pP4JTFo/IeMgDx7ipiTqztRG+\n9Ytcd/NHE1i6Lh4vRfH/ICAgFO3bv7039nTEtAP0WJ7GP87szHzhPjSTok5m\n2s6wcBoTeiXpkqWv0B1f5YLRjH66lqi5TWNMraTzmEGVSrxkkdRk8cL0Ssrg\ngJkKvjFjuvzuSmMyW88qrc5RCzH6R1fdYvP0bLqhiRYse/MaOGfPVKGQJVPr\nN3V7i+Ihm0ERMjDCYp7miiLeIG8dRzz8HfFBK3DYo1QiqmKFRPoU/evnuSXQ\ncQXe\r\n=YskO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/Gh/QSTPFsX1mUeX84RBr/1I6dUHKi9xsYgoUxQdqfwIgTTs38XfEjGbTceJB34h2zLDI5FPLnPUlyPJuOo1/Y3E="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.1_1594309034408_0.8847909983990472"},"_hasShrinkwrap":false},"1.0.2":{"name":"@benglynn/press","version":"1.0.2","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","safepublish":"safepublish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.6","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"gitHead":"3253b039548822fe21770107cb85b517a017f906","_id":"@benglynn/press@1.0.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-CFKZK5WotXN03vojhfENQmbIHuBIod3wmRIniMFYkTdbhU3MIbTaBuXLKYSb8Jqidc1TBgVtAg857q2TnFr1Qg==","shasum":"f2e9f4d6c8c2e2c9a35aa2eddf77b02615c5bc10","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.2.tgz","fileCount":32,"unpackedSize":27726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB0I+CRA9TVsSAnZWagAApwoP/3GO0nUtOEHAjBw6wOiA\nMTSvgSVxVssKupQTHcqwBJwfI4YyeOsssS8YUTHbWLmXfDyeaWCut2dZNvig\nJdAotFIyx1ZyxTii3niNYltUnnohvjcyP1zpCj4S5xv9L661/mDqsjAdIhZ/\nl87iwJvJxyAioCD6bSP1X4DzCWr02J/ycn2WC/oK8rUHVsX4dnHojORTa02h\nlU+VUWdYIU4+BHq/bvSHpKUFPqteTzwK1b7VHVJ0kIBg5AUHoroNAe49diGQ\nnITN5AA39dGugp2HQrOf94VFKyIDIvQd7lj4Bf7+f1ZHwiIS0VJBb3fq1lH7\nC+pjNFwtyu+Zo3fwI3BrHLxbL3OmXlVdXU7zq7H5phv6izVw4Tfz9EJ6Re4m\nUFkV5xhok6XT13Sv7kPLsNcmWs1xUvoGZ1JQ5DI580lUMywSbz42ap4sEkLz\nhv0RBwXG7cpyfE1FFrxLURB7Q3xctTwkxXmxV9h1rUDpyQ2mdRL0K6dmv66y\n45P41ujlL0latwC6BVgUMYafWm2JBqntKUeVc4xUzGsgorwt0PGQmmUDJxyh\nyLALtXmi+BzjOgTffFH9VlKzGLn0M82j0jXAH+Wydan82tDKcWHGOstWoE4q\nb7eUh/wvg8ibvPFG8S3uQG8AGu67Uf7A/MmHNfC61DwuGYbOy3Z+NLfbdVB1\nPkig\r\n=bzc7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHqRvQ8NsXpZ74ev9KfGzFsXOPGd6yRN3PPY+EGjyHMwIhAOi24JyiAR/NUhY5Udc+bMYMXHbZndjqjWb9Kc3C0lGL"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.2_1594311229529_0.42197338721339017"},"_hasShrinkwrap":false},"1.0.3":{"name":"@benglynn/press","version":"1.0.3","description":"Joyful static site publishing","engines":{"node":">=12.16.3"},"main":"./src","scripts":{"pretest":"npm run lint","test":"mocha","lint":"eslint  --ignore-path .gitignore .","safepublish":"safepublish"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["webpack","press","html","markdown","static"],"publishConfig":{"access":"public"},"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.6","chai":"^4.2.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^7.2.0","prettier":"2.0.5","sinon":"^9.0.2"},"mocha":{"slow":500},"dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.13.1","pug":"^2.0.4","showdown":"^1.9.1"},"gitHead":"57712e282d736a735e2f11b2481cd1a58ee3782c","_id":"@benglynn/press@1.0.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-CeQnEWwxdotrAEVuuLJXJrss95n7QYROvCRurvyc35s9geyVpSsjWV1ZTRHQ4TvW80EHaGzuL0hhfNIuuKgsyQ==","shasum":"409bfae04709c99eead1d5191a65784157fdb7f0","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.0.3.tgz","fileCount":32,"unpackedSize":27880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB0P5CRA9TVsSAnZWagAAaBIP/RyjyouQFP2ChzfEWTCc\ngxytktxIK8T6Hj5a6PYTHHR/b1efrBVOV0GFygq3vSy3TDFy7t9B/JaSefkL\nbLimyPT1xuwAXjgwPazJl5xtPWJsZ4OOe0Wk6n18LSj42jqc2ruQsjLOfeEB\nyamsqSYKiM6SshomIJW2RaVzkj81UOC48HZpeZbgPAqTrDeE1BmE5blGQmeG\ndrRFoQlCSmOJgAGV3tZJP77psjjdtLcBxtgd9Lz5EwzZzjT5AME6dsQJwmEE\nzsTUxv5ILeh6yiAd+Tomlm2mAMDpAVCqP7t+LhrsbNw2dWE/senJr4c3i1Mz\naI+m1iikPAsZ8a1rThIfXGUkOfB8OlULvdsSDwmYubybjQSaTnTzDGTcTSwV\nrDN7K9MgVmun/XSpiEUb1XEXCGLqCDUHdFevsBAKP+AmLuLK6Zy1+BHNEbWl\nmcf99LBemj68VJkFdLyUJdT3PzbKCUxNFlZzuOvoGJdIcIX7pOWbtH5AuDz4\no4WKqUdCXV8iryQt2BIYSkz2SV8asHSg6rRMJ2c+SPsKBONn01dniC5vnl5r\ngkhmVMv2LVFRTATSCnV15VIPiMOMqmfTaWx9Cv+G+8VLLFZI4sNyRPAFTprJ\n4nF+sev/1mbnGVk2ccvOfEJ9+KdkN5nAQDpUx5uHX5/XPMC5xJ5/I0hL1+zq\nTVe3\r\n=S3XR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYC04MYXPjnWu5fSHmL/15VcHKxG/j2ec/BRKtYdqhmQIgfJ/7o8YA2J/UwXOu2NfCK/gJcxcF+2pU3p7s/ImSsns="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.0.3_1594311671953_0.05752247886058126"},"_hasShrinkwrap":false},"1.1.0-beta.0":{"name":"@benglynn/press","version":"1.1.0-beta.0","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","publish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","devDependencies":{"@benglynn/publish":"^1.0.6","@types/chai":"^4.2.11","@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","chai":"^4.2.0","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","js-yaml":"^3.14.0","mocha":"^8.0.1","prettier":"^2.0.5","pug":"^3.0.0","showdown":"^1.9.1","ts-node":"^8.10.2","typescript":"^3.9.6"},"dependencies":{"html-minifier":"^4.0.0"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Press%20CI/badge.svg) \n\n# Press\n\nPress integrates tightly with Webpack to take care of your static site's\ncontent. Feed it with templates and a tree of markdown files and it emits HTML,\ntemplated and transofmed by customisable pipe of composable functions.\n\n## Quick set up\n\nClone and play with the [Press demo][] to see Press in action. Press is fast and\nworks well with Webpack DevServer, live reloading when your content changes.\n\n## What does Press need to work?\n\nPress is fed with one or more [pug][] templates, and with a directory structure\nwhere each directory contains an `index.md` file:\n```\nmarkdown/\n├── index.md\n├── french-press/\n│   └── index.md\n└── tea-pot/\n    └── index.md\n```\n\nAs well as its content, each markdown file may have a yaml metadata header, for\nexample:\n\n```yaml\n---\ndatePublished: 2020-02-17\ntags:\n - vessel\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## How does Press work?\n\nPress walks the markdown directory and for each page firstly pipes a\n[Directory][] through a series of transformations into a [Page][] and secondly\nredduces a site-wide [CompileContext][].\n\nThe pages and compile-context may then pass through a compile pipe to create\nHTML.\n\n## Press is built to be customised\n\nThe transformations and compiler-context can be anything you want. Presss is\ndesigned to accept any pipeables and reducers with compatible input and output\ntypes.\n\nFor example, Press uses [pug][] for templating, but you could use a different\ntemplate engine if you replace the pug sepcific parts.\n\n*Much more on customisation TODO...*\n\n## Press is a work in progress\n\nMore pipeables and reducers are on the way, please see [issues][] for more.\n\n## Developing Press\n```bash\nnpm run lint\nnpm run build\nnpm test\n```\n\n[Press demo]: https://github.com/benglynn/press-demo\n[Directory]: ./src/types/directory.ts\n[Page]: ./src/types/page.ts\n[CompileContext]: ./src/types/compile-context.ts\n[Pug]: https://pugjs.org\n[issues]: https://github.com/benglynn/press/issues","readmeFilename":"README.md","gitHead":"04e4da6fcd64a1292e5187976f308d099d4f2063","_id":"@benglynn/press@1.1.0-beta.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-TNMWrbWpAAWq41e4pthMo8D1ojeur0wQOwgkje2OTq00X2ZZD/vjYcdtdHASMUtT1WuG43H/+sH8pD4AO4GfRg==","shasum":"716a9d4fc5e40722153f6159ab2884efeaad2513","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.1.0-beta.0.tgz","fileCount":146,"unpackedSize":60537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJCw7CRA9TVsSAnZWagAAqRgQAJcz9UYScHAb9MAJGUhT\n3vMMF3ed6ldr/wBbUhXzkgAQ34t8YVSOZfTLL9B7SKcmVG3I8KLDSJYfpXF1\n97B74pRwoJYQonPDACBtz0epyVYwqZ2xCkxN2s+am52ixhdAWdEQZ9mRHRoI\n5j37OZL8t6Srmcx00hlZknKQk5UmH1qt7IGNEls0tsQTNtykX6y/8lWxE3/0\n4A9NhFCEcuYjOrXU78F1x0TRn3ioN1qtPdvQaI5giYEuWxzWihybYvsAglP6\nuBRBKilAJyoMLcdBzk8S8T5bLFETkX+ZXWwW5C1xHTGB7RY5Yiz3mVFLfqR7\n0RHKyBfxerVqiKlQWJNBVTifdjCU+GR9Q2cHJLMarElc5tWKAGURi+5DG2HD\nxz6B8kKqfxRa3BT2EWuN4fH+8WlPzS1vwOZDSoK5NPA/rfXO1B1kqmvywCcp\nbyICd3BLGudPJd9XgIIYMo+i/6YhNLCJ+ixutP73WyhK1NkkNNH5ChX0AS0k\njKvMEf2kIzL42XVgvG8iSYM5Cy81nhdx9nIbb+d5o4fhwenX/rI1mI1S0/xE\ncBfd9KUIOrynoKQBz1IxEugP4Xcnp3e1EY91d3oNdO/x3uJmarK6Y1Mvye0l\nlfGOf2OkyzOCKAQdx2z4g9dsVH17iPOMUCCdDid3ecJSRYNHoam1Txm+bcOS\nexbm\r\n=RYoY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK6bwE/Rm6FCLHPrdSg1qDTZwEEq0jrvs79T5T7KbxeAIhAJhZWa65ol4TBmAJnjUw9FcM8z/FbxXAaNZWU+5lDvTO"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.1.0-beta.0_1596206138538_0.16439578282353273"},"_hasShrinkwrap":false},"1.1.0-beta.2":{"name":"@benglynn/press","version":"1.1.0-beta.2","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","publish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.14.0","pug":"^3.0.0","showdown":"^1.9.1"},"devDependencies":{"@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","prettier":"^2.0.5","mocha":"^8.0.1","chai":"^4.2.0","ts-node":"^8.10.2","typescript":"^3.9.6","@benglynn/publish":"^1.0.6"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Press%20CI/badge.svg) \n\n# Press\n\nPress integrates tightly with Webpack to take care of your static site's\ncontent. Feed it with templates and a tree of markdown files and it emits HTML,\ntemplated and transofmed by customisable pipe of composable functions.\n\n## Quick set up\n\nClone and play with the [Press demo][] to see Press in action. Press is fast and\nworks well with Webpack DevServer, live reloading when your content changes.\n\n## What does Press need to work?\n\nPress is fed with one or more [pug][] templates, and with a directory structure\nwhere each directory contains an `index.md` file:\n```\nmarkdown/\n├── index.md\n├── french-press/\n│   └── index.md\n└── tea-pot/\n    └── index.md\n```\n\nAs well as its content, each markdown file may have a yaml metadata header, for\nexample:\n\n```yaml\n---\ndatePublished: 2020-02-17\ntags:\n - vessel\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## How does Press work?\n\nPress walks the markdown directory and for each page firstly pipes a\n[Directory][] through a series of transformations into a [Page][] and secondly\nredduces a site-wide [CompileContext][].\n\nThe pages and compile-context may then pass through a compile pipe to create\nHTML.\n\n## Press is built to be customised\n\nThe transformations and compiler-context can be anything you want. Presss is\ndesigned to accept any pipeables and reducers with compatible input and output\ntypes.\n\nFor example, Press uses [pug][] for templating, but you could use a different\ntemplate engine if you replace the pug sepcific parts.\n\n*Much more on customisation TODO...*\n\n## Press is a work in progress\n\nMore pipeables and reducers are on the way, please see [issues][] for more.\n\n## Developing Press\n```bash\nnpm run lint\nnpm run build\nnpm test\n```\n\n[Press demo]: https://github.com/benglynn/press-demo\n[Directory]: ./src/types/directory.ts\n[Page]: ./src/types/page.ts\n[CompileContext]: ./src/types/compile-context.ts\n[Pug]: https://pugjs.org\n[issues]: https://github.com/benglynn/press/issues","readmeFilename":"README.md","gitHead":"330cc53b3982ad51a01b2a41341ba97909bcab08","_id":"@benglynn/press@1.1.0-beta.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-N9aPtS4KcvxjsCPYC5tUuzgrH0P6pCBIySDmvO5z0lY5cK29RjUvbyHV8jsNynbfhXjFnxwX6slD38nqEWHpMA==","shasum":"60ed326e85a9116685816ad6787a96e66b526e95","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.1.0-beta.2.tgz","fileCount":146,"unpackedSize":60537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJC/8CRA9TVsSAnZWagAAE6UP/Atmr4apqxH9beRrMJoc\nyoRuzd3v+/pUNv6jhN7RNEfpnd41oe1lZpMfaPhRF2cXXbPWO5EFHhiscjzG\nT7Ja4jq+p3o3UaUmOHLkpK82Z6Xe5h1lUTO2ajagmfoWop3ElaIE6hEUel3F\nwhmcGbaFFgyQacw2MZqRSXgPD+pyl4q2/QsEaI1GMLWsTqBtbCYNmsZP47wH\nyRgwGjX3Cu0PKxJU0LJxanI/IIcg3Y/T/EaPJ9y+6qs0c69Vnv7jlJlEq+Vv\nCMsA0xlWjIbKlJaYI/Yl0a8MqTnR3P0CLDNUHW36qAzGQTPFhGd/P6ZkP8kv\nKhD85XTdKPjgiBqVtasSZfe9D2K+EGZm41o2gD2ERf7sqKJN+ckWbVai4GA4\nfzE9ZZ9qxsghZiZJhW5qFUnXsBTEde0zQasU3i1R88jEyd+mc8gOYULdF7xu\nB86xkA+O7EroUzX8LJKRrgao2ZHFoc4pSCfBrL/AL8PMgTRejXdnrAtork6B\nVnBpjwsHFEYJZmV8GlxWk1eWZnQEmF6GY5reflHdRfv1CoX7pJNPZY0gNv07\nUOFInQRd/Ze/cRR7QA2BRJUs8WnmJEjaR23ySDDiWT25mvbUdrLDIEmVnceo\nceqLIbRCVtxkwK5q578RYFcaDLJ5oL0seKW2sePbiopqVjgbriE1IMjtwnuj\n9K76\r\n=dxdq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE8KK6WZiBqPKC8Fm6AS0RcKhvFQmCE8P0o8WgFsmNkpAiAFEA2m2zSBxXMNqfTnefxP4k6ucWPHp/mIHlvBLA7rFg=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.1.0-beta.2_1596207100534_0.31959819772396036"},"_hasShrinkwrap":false},"1.1.0":{"name":"@benglynn/press","version":"1.1.0","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","publish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.14.0","pug":"^3.0.0","showdown":"^1.9.1"},"devDependencies":{"@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/chai":"^4.2.11","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","prettier":"^2.0.5","mocha":"^8.0.1","chai":"^4.2.0","ts-node":"^8.10.2","typescript":"^3.9.6","@benglynn/publish":"^1.0.6"},"gitHead":"8d22f737ef8376e7b5e4a0caa81898ae42841b74","_id":"@benglynn/press@1.1.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-8QkNzUFZfY7KdkF6Czg0HPoDzpfBzlnid1puTunv1bc95XUDrXWlPSzsyFMz066vMqTnnZLqhsM3U4QyoQhVPw==","shasum":"79376d8dbc0285505782707d44c0cdc576ff499a","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.1.0.tgz","fileCount":146,"unpackedSize":60530,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJDDECRA9TVsSAnZWagAAEm8P/2TcE77pdsetJMI/1BwG\nsaesxvShE3fLmN7nUdH/GA2Gs+h9WBTC8FQxUFT/IxTUF8YNZ5TnLKVJFk6u\n5QOZn/nu/DDqei6ZrfDms2mSR47+2UWJkyuZGga2XuHNzwQIeVh9qI8PEvQ8\n6Yip2fZq/wmj81ZDiMbeSqB41sUL4dt71ObEfRfk9Lgx1OeOmdF4VUECKXRy\nt5F+lSN6VBjZU5UNt+VDcHJfqXpjVBTDjnpTFDSeFCq27oNTPVglEfHwwteN\n64QiunmvNb2HFdrC57ZxqyL25RVJVo1BTpuc8L0QgutZp7G6V27PfLSpmV5z\n8a7zB4CWLOj1DTsn/nvP3BRVfKuIZul2AaEvm58qI5uW27I5+dAPSRtdaKo0\nduPc1ZOffUQnbMH/dlu2JuNXezrF909YGZt0GqrTF7QJIsYidLaVujESkDHY\nsTqBYFBhfsTHrZLNvv2NE7pZPLIefOodfwwlgqbE5Y+h5Z/YkDWIb326c3dU\no0B1bPErZBJtx3+60jt6/62CtkElkUZ3O95HH8iNlWvtHGmxIgcy2nfgMrA3\nC7Zxo7CaQjsnyN1IotDGDabulSD/2WwGVnkz9/h2RKKkv+J7CiTQjTC2z0g6\nRS7MnH7cvHJpWomeSxkAksVyEBru9xjYvdJyEecAhvUHLEGxheQF2AkMHIxR\n9R9d\r\n=uKHB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAbmFLlZWDuk80ZpB4XQ2KFytmx1onCndoT6oVAyYiAlAiARrkvR+rWuInRcq9QY2UOewVlIpJxGXBx1QFAVsRIrAA=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.1.0_1596207299457_0.5825634393298902"},"_hasShrinkwrap":false},"1.2.0-benglynn.0":{"name":"@benglynn/press","version":"1.2.0-benglynn.0","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","safepublish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.14.0","pug":"^3.0.0","showdown":"^1.9.1"},"devDependencies":{"@benglynn/publish":"^1.0.6","@types/chai":"^4.2.11","@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/prismjs":"^1.16.1","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","chai":"^4.2.0","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^8.0.1","prettier":"^2.0.5","prismjs":"^1.20.0","ts-node":"^8.10.2","typescript":"^3.9.6"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Press%20CI/badge.svg) \n\n# Press\n\nPress integrates tightly with Webpack to take care of your static site's\ncontent. Feed it with templates and a tree of markdown files and it emits HTML,\ntemplated and transofmed by customisable pipe of composable functions.\n\n## Quick set up\n\nClone and play with the [Press demo][] to see Press in action. Press is fast and\nworks well with Webpack DevServer, live reloading when your content changes.\n\n## What does Press need to work?\n\nPress is fed with one or more [pug][] templates, and with a directory structure\nwhere each directory contains an `index.md` file:\n```\nmarkdown/\n├── index.md\n├── french-press/\n│   └── index.md\n└── tea-pot/\n    └── index.md\n```\n\nAs well as its content, each markdown file may have a yaml metadata header, for\nexample:\n\n```yaml\n---\ndatePublished: 2020-02-17\ntags:\n - vessel\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## How does Press work?\n\nPress walks the markdown directory and for each page firstly pipes a\n[Directory][] through a series of transformations into a [Page][] and secondly\nreduces a site-wide [RenderContext][].\n\nThe pages and render-context may then pass through a render pipe to create\nHTML.\n\n## Press is built to be customised\n\nThe transformations and render-context can be anything you want. Presss is\ndesigned to accept any pipeables and reducers with compatible input and output\ntypes.\n\nFor example, Press uses [pug][] for templating, but you could use a different\ntemplate engine if you replace the pug sepcific parts.\n\n*Much more on customisation TODO...*\n\n## More transformations in the pipeline\n\nIt's early days, more pipeables and reducers are on the way, please see\n[issues][] for details.\n\n## Developing Press\n```bash\nnpm run lint\nnpm run build\nnpm test\n```\n\n[Press demo]: https://github.com/benglynn/press-demo\n[Directory]: ./src/types/directory.ts\n[Page]: ./src/types/page.ts\n[RenderContext]: ./src/types/render-context.ts\n[Pug]: https://pugjs.org\n[issues]: https://github.com/benglynn/press/issues","readmeFilename":"README.md","gitHead":"d717b57c871e5c9830a0ddb9347005f028289fec","_id":"@benglynn/press@1.2.0-benglynn.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-SuWEdUHeC/EyDSZKZ+pGDl2eVlOuixXJATpL4/1m21QkeZ3zSseNidspwKR4RxNATLAFr+tqAumO3Bs0/2BMyw==","shasum":"f0a7dee8db8dcf83bdcd1c933ce32584d9638435","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.2.0-benglynn.0.tgz","fileCount":154,"unpackedSize":66316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKbxnCRA9TVsSAnZWagAAjvAP/23KrVJ76mcyce/pdr6+\n3V/6gH/uOSc8+rNkaD3bhKO9Wq6vRG1UKM1G13CEV+l9bIaHN/w980Fbss2b\nlSsJjnrISVJJn5IOADeRUxDz38B0uh8jmFJDTZnVKYAxH40fYwnjJ6vOdEk4\nPDjzX7PgDEkZI1HAWuIJvkAKb1FjQSlYtgXVskyTdDFM4fnj2GaYohmCCMWj\nmpPpw0FOVy2FpPfy019SJk/d0RlZckbRyrlzgt1gkojXuRWbCHmQFKtM4CWa\nGLd8izZ0DwDJjfXKRai+Gp/S9/3Vm6Z0mdSpwkU8xR7N6Na6A4YmQauSYQAz\nv1/aHSpoP3YZdDCgKemhL+IIlPrI9LnYcLKRW6aR5TTKpuD7QISyelyWhbtF\n4ED3J/7OwUwTmsMq1KjeXcAOcMDjnpOYHJ1xT5IKwiQBqF3CTgiEPn9nfXtD\nptAKgLVPktJPFhQcP9zps9KFkEzICWv+D97EoIOknqMpRmwmaYjKH9Izhtoa\nSrXNwOkgUzSvohbSNqJEg6L+xQvSSd3WEeBiZzYz8XxiMfbDSA6nLKPWy5sA\n4SjbIkubqf4UhLF6NYgonLdVjn6HGVtNzi8Mq0sfhhgz3PBIfTUPgXNaelh0\ntSDhKksp5Q/EU8KXquGxepBaPLRn7nJXl1tR3/mLQ+lDJJKcAQb76K31a81r\n5JlE\r\n=DMDI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFGQ3x55RBoOLHzb80HF6ihQzrT2Pth7q2gvX2pTmIHQIhAK7q9k8znpzRPkUCheAMGVSyYR3gCixNkBPy0ajev96S"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.2.0-benglynn.0_1596570727249_0.6855114251534054"},"_hasShrinkwrap":false},"1.2.0-benglynn.1":{"name":"@benglynn/press","version":"1.2.0-benglynn.1","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","safepublish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.14.0","pug":"^3.0.0","showdown":"^1.9.1","prismjs":"^1.20.0"},"devDependencies":{"@benglynn/publish":"^1.0.6","@types/chai":"^4.2.11","@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/prismjs":"^1.16.1","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","chai":"^4.2.0","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^8.0.1","prettier":"^2.0.5","ts-node":"^8.10.2","typescript":"^3.9.6"},"readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Press%20CI/badge.svg) \n\n# Press\n\nPress integrates tightly with Webpack to take care of your static site's\ncontent. Feed it with templates and a tree of markdown files and it emits HTML,\ntemplated and transofmed by customisable pipe of composable functions.\n\n## Quick set up\n\nClone and play with the [Press demo][] to see Press in action. Press is fast and\nworks well with Webpack DevServer, live reloading when your content changes.\n\n## What does Press need to work?\n\nPress is fed with one or more [pug][] templates, and with a directory structure\nwhere each directory contains an `index.md` file:\n```\nmarkdown/\n├── index.md\n├── french-press/\n│   └── index.md\n└── tea-pot/\n    └── index.md\n```\n\nAs well as its content, each markdown file may have a yaml metadata header, for\nexample:\n\n```yaml\n---\ndatePublished: 2020-02-17\ntags:\n - vessel\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## How does Press work?\n\nPress walks the markdown directory and for each page firstly pipes a\n[Directory][] through a series of transformations into a [Page][] and secondly\nreduces a site-wide [RenderContext][].\n\nThe pages and render-context may then pass through a render pipe to create\nHTML.\n\n## Press is built to be customised\n\nThe transformations and render-context can be anything you want. Presss is\ndesigned to accept any pipeables and reducers with compatible input and output\ntypes.\n\nFor example, Press uses [pug][] for templating, but you could use a different\ntemplate engine if you replace the pug sepcific parts.\n\n*Much more on customisation TODO...*\n\n## More transformations in the pipeline\n\nIt's early days, more pipeables and reducers are on the way, please see\n[issues][] for details.\n\n## Developing Press\n```bash\nnpm run lint\nnpm run build\nnpm test\n```\n\n[Press demo]: https://github.com/benglynn/press-demo\n[Directory]: ./src/types/directory.ts\n[Page]: ./src/types/page.ts\n[RenderContext]: ./src/types/render-context.ts\n[Pug]: https://pugjs.org\n[issues]: https://github.com/benglynn/press/issues","readmeFilename":"README.md","gitHead":"22239bec0b6c087d6cd4a4eedb0629b1bc7c14f5","_id":"@benglynn/press@1.2.0-benglynn.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-A109HucDybANc1iBOi5o1+J3zfBDx5HfpnYS4pRkb851V0FSA9xOof0bhbfUJsQsxnjWCBPczQSF/qBMW7DEqg==","shasum":"37cce5988f117fadc0d1981165bd742937080678","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.2.0-benglynn.1.tgz","fileCount":154,"unpackedSize":66316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKb4VCRA9TVsSAnZWagAApAcP/jHGHVXaGLnIVu2sesfR\nYD9bSAwoynAiLPgD64cezdslRlsqLHjqxL0yh8LHmhvFB7HG7AuSiEbBMjvE\nIOv3SAEgGw0YxE1Uf+trxpxNBdHtxoe82FlX6GzK7JErQ5Mr6QlVlEPFX5ns\nJShlo1EbckueX0hC7d1UgOsrayjTZtTZ4P0WMwUHDpyAdjjrtH8uEQpRk0d8\ng/MnMErIsCWfDMvtt+Hx+o2nWcGaW/IQ8+1G6cOS8xvH8RzT6Rt2vzFGK8hM\nrfJeFTJBBC2IeRJnmW5wyBtDVlhhgmVEsCJ5QFBx3w7MqkIYdr8nxMDKo/uX\nZx8WDm/puATxtFZxBuqgQApOx4yphsFdEPvi8Vcs0eLitFc3vv18oD2qfsg2\nRCBa31mFTJbmyr37zxnWQmgrfaklASQLb33MkNpVzXL87XQAioGIhvPd0e/3\njLJjfg/B29VhZPSdOg9A/92Po5bJBkCc2ErFUd+5mhkgwferR6B9glwUH7S5\nRBighbg8gzzvuhm3Q3hOVUVDsZtfAoAaaB/2RXqTsaYIlocz1DjziNh+jEHy\nMKvQSzCLUjPJ+AOqR7HFEmLTq/6IR9dlX0jRcyhPQzVh+oJg2HfFtykjLrJj\nMp87oRYg1ZJatahwZNr3iK+Mloqafc6LFArD4xzEdtamtIEvZiHJp0jM/ZpK\nvvBM\r\n=VCQU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7keCYIZNY9WbEOPnfuiVsQX+nVtfi3FnrZFopwhlW9QIhAOkDHA16m/CMMrlvU96yb0XwHWEjXlU69g45/iLdubMV"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.2.0-benglynn.1_1596571157541_0.26092403521678476"},"_hasShrinkwrap":false},"1.2.0":{"name":"@benglynn/press","version":"1.2.0","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","safepublish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.14.0","pug":"^3.0.0","showdown":"^1.9.1","prismjs":"^1.20.0"},"devDependencies":{"@benglynn/publish":"^1.0.6","@types/chai":"^4.2.11","@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/prismjs":"^1.16.1","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","chai":"^4.2.0","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^8.0.1","prettier":"^2.0.5","ts-node":"^8.10.2","typescript":"^3.9.6"},"gitHead":"c35945c929eb46681cf6aa675942615e947df6ed","_id":"@benglynn/press@1.2.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-K38zO9EQ8lA0MeshLX1KAoPb+aQAZ8TEHl2w0V7vGR3nSZzlQel4E6xSSV8cMlJJ6o14vsu9+6AyNei13nDEKg==","shasum":"318095a208bc76dfd43b641279df39044acee538","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.2.0.tgz","fileCount":156,"unpackedSize":69029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLUnwCRA9TVsSAnZWagAAOW4P/RP+lgMLXJ9yhyhRmLKm\nGF89ZKfeQJCOp3tn4+/2Y57f4Xxx/G+d/91gTBqo7ZbVeqwNS8LZ85RVConX\nSaA21p+3muMXGKFuQ23H6Et/Jnow/XDZv00G9VPXTjzTfhAd5e870fSjT78l\nAp5POjnqrrwdghiiK8W8Gxgffo3cn72aGtsxe8+yWMQ7spjYrYrHsrpKfZhb\nv6USo75tJa0ftAtVeZIiGDz7dVcMqqfY3oOrjSKWvgFztqnanzAm4qb9hSB7\ncCVPEzes1nXBnQ5/++rYLBYsDnMH0DzIAhT+S1ZeT4sBlQWzhdhbY+ieehmG\nWuHbQyvJ1h+oR1Ph1rr17oDrI0i16LNVqNnLdR9TMmP2iK3lrNFy1Z0IOI+v\nZzQaMVIWsAYDB4Emyx3oGA5U7BX/5NKHrcaxWQgof8dpoTw4bLNOVi6wDwNC\nN97s4ncxZMvXbNb5//i9zpsZLu1nZ2+pPDYJ3ZWsW0j3M6uKPZCBWema/U6r\nco5r403ka0BK09gG2TeQ5GcGxxtewIMS8awod0ENsfuALA8CM/yTO83AzXLD\ndkr5/Ljis6ZMMPWtoddiEyNPiqSpC5YUFWWP79rMyLmS+kiaPIPJO4e5itlh\nN2y8yr+wHpKI4o2JVIPvNwWpIGIgmep32AzYOuzMZ54fv6huB+uWs+pYxdv+\nJM+P\r\n=S4Bt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAI9aNQW+b/H8BkINE655SjtebqucKdUmKUHxlfMssfoAiEAwUL+hmLHOkgmEXG5i1XJPDNiZHfF5LtF1blzpTIiWWs="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.2.0_1596803568179_0.5909358469908275"},"_hasShrinkwrap":false},"1.2.1":{"name":"@benglynn/press","version":"1.2.1","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","safepublish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.14.0","pug":"^3.0.0","showdown":"^1.9.1","prismjs":"^1.20.0"},"devDependencies":{"@benglynn/publish":"^1.0.6","@types/chai":"^4.2.11","@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/prismjs":"^1.16.1","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","chai":"^4.2.0","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^8.0.1","prettier":"^2.0.5","ts-node":"^8.10.2","typescript":"^3.9.6"},"gitHead":"e873fd7cfbc10bddffd43d0ca7d64a045938d987","_id":"@benglynn/press@1.2.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-dcdec5Qzn1fAnxEM1vlLiB33XhoY1VBhePFs5crP7OwWfj7ZHrkXw+J4msixW4+hErfHEUF/KQUYa5JD+sgxuA==","shasum":"e3083b926bc3e628616417ee493c554534aa6f8e","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.2.1.tgz","fileCount":156,"unpackedSize":69208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLvXTCRA9TVsSAnZWagAAm7sP/0C1dOG4IMT1SPrA29la\nrLfBgApegYfxlWX3rbaT/O80VSp1k6mD9By5K+wb4VZ25qZsgrdCbfDKQ055\nwo+e0ZUkzoVU8j9K2m+fpe4CVkHFx74ZcNl7nkP803NzHz9uGc9vSJZMn3ga\nEGhJ+7Orm/TFJmGDdqunVyBhgXC4sHvN6ss4qCMkWV6//dw3qykdqDbWK7XO\nzrQPr2NYTHcuPPFO8acNAMguGwSOaLuVAzbVQfIQWt3YvMY9FNNW0zlHvk0U\nCP/jd7BHwoNN7Y5vtDdha3eorTpdqxxigUijM3PkV3oBlubT8MXwdogcAZjd\ni1WqrwNF0utJGw4yEvF4XBxh3kgRcuIlaJ/T8l00MrinL3NqpNjE2pfh/F8q\n3PBsFqgXjmrHAFPL7/lmO6R9lW80nUQIlfiE+7U/+QTufk3HMMbEjF/Q8BYr\nrNgAzl1DDp74kurG8ELKY2cCMiLWPTFfd61Y6cLYNItWlJPVbx+vd5yyAmTl\nqqH+zF2SPh5lhzI6o8HM4i5n0jyRoV+gOu3KRO80JtwSCs4aZvNDayU9dE21\n1oj/nbqzfCSJ3TqeBjknwc6/9ecigGAEYIhEu0qEb029q13tKRPIGaJ+48Rm\nzoyVIuqaRGdHxqdou6ebIiAiPtkm4h5Mc8pbss24SQPWg+6gz66/RwvQpoz3\nquko\r\n=IF45\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRy+v1y53F45Rw7c3CNPmlgbr6upaCPyjwe6mG4DHQbQIhAJ5k0hBxPP50Ev551jBEwrvsqyY/G2xmSZLsh7loIh9x"}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.2.1_1596913106400_0.9370306352598825"},"_hasShrinkwrap":false},"1.2.2":{"name":"@benglynn/press","version":"1.2.2","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","safepublish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.14.0","pug":"^3.0.0","showdown":"^1.9.1","prismjs":"^1.20.0"},"devDependencies":{"@benglynn/publish":"^1.0.6","@types/chai":"^4.2.11","@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/prismjs":"^1.16.1","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","chai":"^4.2.0","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^8.0.1","prettier":"^2.0.5","ts-node":"^8.10.2","typescript":"^3.9.6"},"gitHead":"0282c9b62343de44bbec47bc5afbb6946b7a837a","_id":"@benglynn/press@1.2.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-xgTgF+ZM5A6i6hEO//UdansB0OTUPyhQ79OjmMsr9PpNoNG93GjS2cwc3fOyC0maFOwDXna4Mq0lKzEOR2NtGw==","shasum":"7589e43d943cd71c4fcc752b781636b640328269","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.2.2.tgz","fileCount":156,"unpackedSize":69202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMQ0eCRA9TVsSAnZWagAAJgsP/jKeDTGY6SB6CYaYzNps\nqO2ClurqosbPyYAWT33q7kYWPs3T0rpq/f4fcKfHeHCB7hseyJYecXZp+6S7\nODH8YQvBUofZ7TnVzrfWgkHrQAji9MvZOCyhmDv8lCOFjcvIygur0MawtP4o\n3KP2j7pI6RejaUA+hv1Cn0pSBRAmjpZBBbjSd9kSShhNiH6jIk3VvBRHw39T\ntCHt9+J8iok3TaVv3zP564CLK++hX7ThYzki1E9M3WiJSd+rKIVaEG4z4CjV\nAvC5/8soqvuJkBXVIiQa7iZVqhaD5KUdDsBAOXRrLB3c+BBe++9cAz9n+R5l\nb0KDBLuMo60IAdEHOYfbSDqLSQfXTCPpHDbMvXfxrJ2x59rUtVxKJN9Q5CJ3\nyxN3OjlALKHfURCZf8hOe+i1ZT3PHhU8vp1q1pzFHXl9+1jVNASy39mudJ6W\nAZYCcZHnf3HkWhBmCEeeK1GQWQttzsXHs9LUczZBLZ7dBUjC2F55fQVbrml1\nG6qIfcwFAVTXy4Sk/20+qmjck0JXlkHiO2J0RbqsmaKPnRNYdzg6J1OOheNv\n9IbQHm2lkcdK2wBP7AXfEv+WuZHs8224Udg9KCoSainrT5oyCoz81f9+gAzI\nS9ZbstT0QXV3Ocy9rHIdK2aXZCOlKYZjcWypeV3RGVO8mnC+lYIcEjL2N4Nj\nq5Fx\r\n=s85H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfuv2WdMgkxfAlI3tgXZ8f6/Xrf7WJ0dH55VTVpHyN8AiAukUnfPmjgQb27O4FKrJ30e22pVEV2gnxylJJOJ+Cu1Q=="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.2.2_1597050141612_0.8319115776572237"},"_hasShrinkwrap":false},"1.3.0":{"name":"@benglynn/press","version":"1.3.0","engines":{"node":">=12.16.3"},"description":"Joyful static site publishing","main":"dist/api.js","types":"dist/api.d.ts","scripts":{"prepublishOnly":"npm run build","safepublish":"safepublish","build":"rm -r ./dist/* & tsc","lint":"eslint src","test":"npx mocha --require ts-node/register --extensions ts,tsx --watch-files src,test 'test/**/*.{ts,tsx}'"},"repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"keywords":["typescript","press"],"author":{"name":"Ben Glynn"},"license":"MIT","bugs":{"url":"https://github.com/benglynn/press/issues"},"homepage":"https://github.com/benglynn/press#readme","dependencies":{"html-minifier":"^4.0.0","js-yaml":"^3.14.0","pug":"^3.0.0","showdown":"^1.9.1","prismjs":"^1.20.0"},"devDependencies":{"@benglynn/publish":"^1.0.6","@types/chai":"^4.2.11","@types/html-minifier":"^4.0.0","@types/js-yaml":"^3.12.5","@types/mocha":"^7.0.2","@types/node":"^14.0.21","@types/prismjs":"^1.16.1","@types/pug":"^2.0.4","@types/showdown":"^1.9.3","@typescript-eslint/eslint-plugin":"^3.7.1","@typescript-eslint/parser":"^3.7.1","chai":"^4.2.0","eslint":"^7.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","mocha":"^8.0.1","prettier":"^2.0.5","ts-node":"^8.10.2","typescript":"^3.9.6"},"gitHead":"d37a5e4be6af957e19dba7d86ede792a5f3f314f","_id":"@benglynn/press@1.3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-btiwhutdqa9WWiDXpd5VE/k9Feu8We9oim6JSl0MEn9jCtxwg5e+hO2t8AxDALPik9n+AUKzXqSIZs6aso09UA==","shasum":"88091400b753cdacdbd1ae9ccf574d6b7e694857","tarball":"https://registry.npmjs.org/@benglynn/press/-/press-1.3.0.tgz","fileCount":164,"unpackedSize":71382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMR9kCRA9TVsSAnZWagAAItUP/12vqBV2EJXMq8QChT5F\nuLWPj9vGlOJ29eZ/f/zpE1aJRPc1l6KNKJz1nNJTVm4xGJr+TsWstQ9fPbxR\nc7XSMH9aDTuAO9K2dzEauNAYzdR1N3G5Ulh2CGp2wFrOKp5eSO/tF0vrEfXT\nrxy1CACOxKTNtF5q6PRnJf9FIU9SL2b4ld/D+xNVwMgCUxH6eKgly9eW6y5i\ni1WLXeuh5wOcMrB8UJyZGqpFUn9c2OJwGIbVXWq/g3aqkcwt8VnP15UFBENZ\n1F5+3+JRXfa3SytncShBINBtqcA1lHE5PCVRvxVZRLTW7VG366f5oTiF0jcf\nX2mDd51JilvD1LaCh19whfV8kIQWetUmEkeIXKo/EtiFgrXmh7WDMn7GOjHs\n1pHeF+kTKOYxAahrVcxJAvqNeVZ9CN095apQZXZ4aJPfxELr+Z6VuMmz8HAV\nvLZJGYjhBNdGWRXMnxff9S7lQtPex0vOEwQbZS1QrLwmG6VLbnDHljxofdo4\neFr4KqxzTL9QszEPVbueEYkE9Rm/ARYTsLYw8zCAeVTfAC7hTgU+cQ381m7E\n5sH7Fxhm6boVqEBQiW2Yut++2Az2m6vsrB08RbLxUv9E8DTI8LU2bgrpGv/+\neaIl+NPJIWhW/KPregGvNuKBzGW2gTQwgeApmwBh2zGqUuE86Je8EJxoB3Xe\n96Qx\r\n=RcDi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9jbVZY4a4Tq1LQBFjovOWdCjwzVhmWattflSDJ8OcGAIgQSIBgFXNFYqOa5xxWK59ptm7M9wbGybAzheeuXDwwA4="}]},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"_npmUser":{"name":"benglynn","email":"ben@benglynn.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/press_1.3.0_1597054820391_0.6924167221093842"},"_hasShrinkwrap":false}},"time":{"created":"2020-07-09T09:26:21.738Z","1.0.0-beta.0":"2020-07-09T09:26:21.884Z","modified":"2022-04-04T18:22:36.394Z","1.0.0-beta.1":"2020-07-09T10:24:12.741Z","1.0.1-benglynn.0":"2020-07-09T11:59:07.066Z","1.0.1-benglynn.1":"2020-07-09T12:04:07.350Z","1.0.1-benglynn.2":"2020-07-09T12:11:31.751Z","1.0.1-benglynn.3":"2020-07-09T12:18:15.720Z","1.0.1-benglynn.4":"2020-07-09T13:06:57.715Z","1.0.1-benglynn.5":"2020-07-09T13:09:28.860Z","1.0.1-benglynn.6":"2020-07-09T13:21:50.353Z","1.0.1-benglynn.7":"2020-07-09T13:43:59.604Z","1.0.1-benglynn.8":"2020-07-09T13:44:49.910Z","1.0.1-benglynn.9":"2020-07-09T14:49:37.011Z","1.0.1-benglynn.10":"2020-07-09T14:50:39.149Z","1.0.1-benglynn.11":"2020-07-09T15:31:22.307Z","1.0.1":"2020-07-09T15:37:14.504Z","1.0.2":"2020-07-09T16:13:49.655Z","1.0.3":"2020-07-09T16:21:12.077Z","1.1.0-beta.0":"2020-07-31T14:35:38.699Z","1.1.0-beta.2":"2020-07-31T14:51:40.655Z","1.1.0":"2020-07-31T14:54:59.621Z","1.2.0-benglynn.0":"2020-08-04T19:52:07.392Z","1.2.0-benglynn.1":"2020-08-04T19:59:17.679Z","1.2.0":"2020-08-07T12:32:48.333Z","1.2.1":"2020-08-08T18:58:26.524Z","1.2.2":"2020-08-10T09:02:21.769Z","1.3.0":"2020-08-10T10:20:20.520Z"},"maintainers":[{"name":"benglynn","email":"ben@benglynn.com"}],"description":"Joyful static site publishing","homepage":"https://github.com/benglynn/press#readme","repository":{"type":"git","url":"git+https://github.com/benglynn/press.git"},"author":{"name":"Ben Glynn"},"bugs":{"url":"https://github.com/benglynn/press/issues"},"license":"MIT","readme":"![Node.js CI](https://github.com/benglynn/press/workflows/Press%20CI/badge.svg) \n\n# Press\n\nPress integrates tightly with Webpack to take care of your static site's\ncontent. Feed it with templates and a tree of markdown files and it emits HTML,\ntemplated and transofmed by customisable pipe of composable functions.\n\n## Quick set up\n\nClone and play with the [Press demo][] to see Press in action. Press is fast and\nworks well with Webpack DevServer, live reloading when your content changes.\n\n## What does Press need to work?\n\nPress is fed with one or more [pug][] templates, and with a directory structure\nwhere each directory contains an `index.md` file:\n```\nmarkdown/\n├── index.md\n├── french-press/\n│   └── index.md\n└── tea-pot/\n    └── index.md\n```\n\nAs well as its content, each markdown file may have a yaml metadata header, for\nexample:\n\n```yaml\n---\ndatePublished: 2020-02-17\ntags:\n - vessel\n---\n# French press\n\nA device for brewing coffee.\n```\n\n## How does Press work?\n\nPress walks the markdown directory and for each page firstly pipes a\n[Directory][] through a series of transformations into a [Page][] and secondly\nreduces a site-wide [RenderContext][].\n\nThe pages and render-context may then pass through a render pipe to create\nHTML.\n\n## Press is built to be customised\n\nThe transformations and render-context can be anything you want. Presss is\ndesigned to accept any pipeables and reducers with compatible input and output\ntypes.\n\nFor example, Press uses [pug][] for templating, but you could use a different\ntemplate engine if you replace the pug sepcific parts.\n\n*Much more on customisation TODO...*\n\n## More transformations in the pipeline\n\nIt's early days, more pipeables and reducers are on the way, please see\n[issues][] for details.\n\n## Developing Press\n```bash\nnpm run lint\nnpm run build\nnpm test\n```\n\n[Press demo]: https://github.com/benglynn/press-demo\n[Directory]: ./src/types/directory.ts\n[Page]: ./src/types/page.ts\n[RenderContext]: ./src/types/render-context.ts\n[Pug]: https://pugjs.org\n[issues]: https://github.com/benglynn/press/issues","readmeFilename":"README.md","keywords":["typescript","press"]}