npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

puer-freemarker

v1.2.0

Published

Use puer with Freemarker templates.

Downloads

6

Readme

puerF

Commandline interface to use puer with FreeMarker templates.

Usage

Install it either as a global command line tool or as a local development dependency:

npm install -g puer-freemarker
or
npm install --save-dev puer-freemarker

Move into your working directory and run it:

cd your/working/directory
puerf

puerF requires that you have Java installed as it is needed to render FreeMarker templates.

Command reference

Usage: puerf [cmd] [options]


Commands:

    init [options]   Set up basic folders and files to work with puerf
    convert          Convert FreeMarker templates into static HTML using mock data.

  Start a puer Server, easily mock routes and render FreeMarker templates

Options:

	-h, --help               output usage information
	-V, --version            output the version number
	-r, --routes <file>      Configuration file for mocked routes (multiple possible)
	-c, --config             If a config file should be used
	-t, --templates <path>   Path to folder in which Freemarker templates are stored
	-s, --static-dir <path>  Path to serve static assets from
	-o, --root <folder>      The root folder that files should be served from
	-p, --port <number>      Specific port to use
	-w, --watch <files>      Filetypes to watch, defaults to js|css|html|xhtml|ftl
	-x, --exclude <files>    Exclude files from being watched for updates
	-l, --localhost          Use "localhost" instead of "127.0.0.1"
	--no-browser             Do not autimatically open a brwoser
	--debug                  Display debug messages

Mocking requests

This is what puerF is really all about. Making it as easy as possible for you to "fake" a backend. To achieve this puerF builds upon puers mocking of request. And simplifies the use of FreeMarker templates for those requests.

To mock requests create modules that export a single object following the syntax outlined below. You may split your routes over as many files as and modules as you which, puerF will combine them for you. demos contains a sample file.

By default puerF will assume that you spread your routes over two files mock/routes.js and mock/ftlRoutes.js.Should you wish to use files from a different location you can do so using the -r option.

Syntax for routes

All routes should be described as a String identifying the route and a routeObject containing information about how to mock that route. The routeObject may have any of the following properties:

| Property | Description | |----------|-----------------------------------------------------------------| | handler | A function that handles this route | | template | A FreeMarker template to be rendered for this route | | data | An object to be returned at this route or used for the template | | jsonFile | The path to a file containing the data for this route |

When a route is called puerF resolves the routeObject as such:

  • If a handler is present, it is executed
  • Else if a template is specified it is parsed
  • If none of the above are true the data is returned

Working with query parameters

Real world applications might use query parameters to get specific results from a URL. You can easily mock those requests as well. To mock a route like /example/some?user=name, inside your regular routes file, you can simply access req.query.user to get the users name.

"GET /example/some": {
    handler: function(req, res, next) {
        var name = req.query.user;

        //Do something with the name, like sending it back.
        res.status(200).send(name).end();
    }
}

FreeMarker templates

By default puerF will look for FreeMarker templates in ./templates. To specify another folder you can use -t. Read the guid to author FreeMarker templates.

FreeMarker to static HTML

puerF can also convert FreeMarker templates into static HTML using mock data provided in a routes file. This needs the routesFile from which to take the templates to make static. templateRoot the root folder in which FreeMarker templates are and targetFolder in which to export the static HTML files.

Usage: puerf convert <routesFile> <templateRoot> <targetFolder>

Use as a dependency

Instead of using puer-freemarker as a commandline tool, you might also use it as a dependency in your development pipeline. For instance in your gulpfile.

To do so simply var puerf = require('puer-freemarker'). The full docs may be found here. Below is the public API of puerF.

puer-freemarker

puerF, a simple tool to run a live reloading server with mocked routes and FreeMarker templates.

puer-freemarker.init(options, callback)

Runs the initializer. Will output basic files to the current working directory.

Kind: static method of puer-freemarker
See: initializer

| Param | Type | Default | Description | | --- | --- | --- | --- | | options | object | | Options for the initializer. | | [options.onlyConfig] | boolean | false | Only create the config file. | | callback | function | | Function to call once done. |

puer-freemarker.start(options, callback)

Starts the core application.

Kind: static method of puer-freemarker

| Param | Type | Default | Description | | --- | --- | --- | --- | | options | object | | An object containing options. | | [options.routes] | array | ['mock/ftlRoutes.js', 'mock/routes.js'] | An array of paths to all files containing mocked routes. | | [options.config] | boolean | false | Use config file. | | [options.templates] | string | "'templates'" | Root folder for FTL template files. | | [options.root] | string | "'./'" | Root folder for static files to serve. | | [options.port] | number | 8080 | The port to use for the server. | | [options.watch] | string | "'js css html xhtml ftl'" | Filetypes (seperate them by pipes) to watch for changes. | | [options.exclude] | regEx | /node_modules/ | Files to exclude from watching. | | [options.localhost] | boolean | false | Use localhost instead of 127.0.0.1. | | [options.browser] | boolean | true | Automatically open a browser for the user. | | [options.debug] | boolean | false | Enable debugging output and log file. | | callback | function | | Function to call once started. |

puer-freemarker.close(callback)

Programatically closes puerF.

Kind: static method of puer-freemarker

| Param | Type | Description | | --- | --- | --- | | callback | function | Function to call once done. |

Testing

puerF utilizes tape for testing. Install development dependencies and run npm test to run the tests.