UNPKG

node-amp-mustache-skeleton

Version:

AMP page skeleton served via node.js featuring mustache templating.

125 lines (89 loc) 4.4 kB
# node-amp-mustache-skeleton AMP page skeleton served via node.js featuring mustache templating and equipped for Dockerization. ## Quick start * Fork this repo. * `npm i -g gulp-cli` * `npm i` * `npm start` * Navigate to [`http://localhost:8080`](http://localhost:8080) in your browser to see stuff. * Start developing. ![Intro](src/img/intro.gif) ## Directory layout ```bash dist/ # production code pageA/ index.html pageB/ index.html img/ google-site-verification.html index.html index.js package.json package-lock.json robots.txt sitemap.xml src/ # source code img/ # images json/ # json data seo/ # seo related files robots.txt google-site-verification.html sitemap.xml server/ # node server source index.js # koa server styles/ # css mystyles.css templates/ # mustache templates vars.json # variables global to all templates views.json # array of views to render, can override variables in vars.json wireframe.mustache # base wireframe pageA.mustache # view partial to be wrapped in wireframe.mustache pageB.mustache Dockerfile gulpfile.js package.json package-lock.json ``` ## Features ### CI When executing `npm start` without the `NODE_ENV` environment variable set to `production`, gulp is instructed to watch changes to source files and automatically rebuild the project. ### AMP validation With each build, the resulting HTML is validated against the AMP standard and the build fails if invalid. ### (LD+)JSON The skeleton is setup so you can inline JSON data, e.g. to add microdata. Put your JSON files into [`src/json/`](src/json) and reference them in your HTML via ```html <script type="application/ld+json" src="my-data.json"></script> ``` ### Styles All stylesheets located in [`src/styles`](src/styles) will be combined, processed by [postcss/autoprefixer](https://github.com/postcss/autoprefixer), minified and inlined into generated HTML files. ### Templating #### Wireframe Templates are rendered by including a view partial into the base [wireframe](src/templates/wireframe.mustache). Please take a look at [src/templates/wireframe.mustache](src/templates/wireframe.mustache) and adjust it according to your needs. #### Adding pages/views When you add a new page/view, it needs to be configured in [`src/templates/views.json`](src/templates/views.json). This file contains an array of all views/pages to publish. Each entry in the array is an object with the following signature: ```javascript { "name": "pagename", "vars": { "href": "/path/to/this/page", // ... } } ``` The important parts are the `name` and the `vars.href` property. The build process will create the path referenced in `vars.href` in the `dist/` directory and render the view into an `index.html` file therein. By convention the build task looks for a partial named `pagename.mustache` in the [`src/templates`](src/templates) directory. Please look at [`src/templates/views.json`](src/templates/views.json) for some basic examples. #### Variables Variables global to all templates are set in [`src/templates/vars.json`](src/templates/vars.json). Any variable can be overriden by a view via the `vars` property in [`src/templates/views.json`](src/templates/views.json). Please look at [`src/templates/vars.json`](src/templates/vars.json) and [`src/templates/views.json`](src/templates/views.json) for some basic examples. ### Server This skeleton comes equipped with a environment aware [`Koa`](http://koajs.com/) server with compression and basic caching enabled. Configure the server via the following environment variables: * `PORT` [default: 8080] * `COMPRESSION_THRESHOLD` [default: 0] * `CACHE_MAXAGE`: [default: 60000 *(= 1 minute)*] Please have a look at [`src/server/index.js`](src/server/index.js) and adjust according to your needs. ### Docker This skeleton provides a rudimentary [`Dockerfile`](Dockerfile) ## [Changelog](CHANGELOG.md) ## [License](LICENSE)