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 🙏

© 2025 – Pkg Stats / Ryan Hefner

tagtools

v0.0.1

Published

Node module for building HTML tags

Readme

node-tags - HTML tag builder.

Node module for creating HTML tags inspired by the R package htmltools.

install me!

npm install --save tagtools

How to use

This package provides very simple wrapper methods for creating HTML tags in client side code or in server applications. It provides simple methods for creating HTML tags as string without needing to write repetitive code like '<h1>' + 'this is my text' + '</h1>'.

var tags = require('tagtools');
var html = '';

html += tags.div(tags.p('This is a paragraph inside a div!'));
html += tags.h1('this is now a title appended to the end!');
html += tags.a('and here is a link with attributes!', 'href="https://google.com"');


// Attributes can be specified using an array as well. 
// The user must provide double quoting!

html += tags.a('Attributes from an array?', ['href="https://google.com"', 'target="_blank"']);


// Using an object to create tag attributes. 

html += tags.a('And from an object!!?', {
    href: '"https://google.com"', 
    target: '"_blank"'
});


// End result!
> "'<div><p>This is a paragraph inside a div!</p></div><h1>this is now a title appended to the end!</h1><a href="https://google.com">and here is a link with attrib
utes!</a><a href="https://google.com" target="_blank">Attributes from an array?</a><a href="https://google.com" target="_blank">And from an object!!?</a>'"

Only two arguments?

Yeap. All of the tags functions take only two arguments: content and attributes. The content is what goes inside the main body of the tag, and the attributes are HTML attributes that are applied to the top level tag.

Adding more tags

The module includes all standard HTML 5 tags by default, but you can extend these by adding your own custom tags (i.e. for those using polymer?). The main tags function can be extended with a single parameter specifying the name of the new tag.


tags('foobar');

tags.foobar('bimbaz');

> "<foobar>bimbaz</foobar>"

Contributing

Please create a pull request with any changes you feel would be beneficial. This package is extermely simple by design, as I only intend for it to serve a single purpose: building html tags without having to write the opening and closing of tags and simplifying adding attributes. Any extensions beyond this would probably be unnecessary and beyond the scope of this module. Keep it lightweight!

TODO

  1. Make documentation.
  2. Make tests.
  3. Add ability to chain tags, like tags.p().a()
  4. Add ability to use arrays or object as attributes.