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

@deskeen/web-builder

v0.2.0

Published

Node.js Web Builder

Downloads

5

Readme

Node.JS Website Builder

This tool allows you to build a website by performing a certain number of tasks called modules.

Usage

const builder = require('@deskeen/web-builder')

await builder.build({
  source: [
    // Either a file or a directory
  ],
  modules: [
    // Either:
    // A module name
    'module-name',
    // OR
    // An array containing the module name and the module options
    ['module-name-with-options', {  }],
    // OR
    // A custom function (See "Create your own modules" chapter)
    moduleFunction,
  ],
  log: false,
})

The build function accepts the following properties:

  • source: a list of files or directories that will be passed to the modules.
  • modules: a list of modules. A module can be a module name, an array containing a module name and the module options, or a function. If you add a module name, make sure to add it to to the package.json file and install it beforehand. If you want a function, please read the Create your own modules chapter.
  • log: Whether logs are shown.

A writeFile(filepath, data) function is also available.

Available Modules

Create your own modules

You can create your own modules and perform custom tasks by passing functions instead of package names.

function (sourceMap, opt, lib)

Three parameters will be passed to your module/function:

  • sourceMap: A Map object contaning the file path (i.e. /path/filename.xyz) as key and the content of the file as value provided by the user.
  • opt: An object containing the options also provided by the user.
  • lib: An object containing useful functions provided by the engine.

Three functions are included in the lib object:

  • getTag(tagName, tagValue): Returns a tag name, i.e. {{tagName:tagValue}}.
  • getTagList(tagName, text): Returns the list of tags included in a text (typically the file content).
  • findAsset(filename, directoryList): Find a specific filename in a list of directories.
  • log(text): Log text (if the user turned it on).

Example of module

Imagine your project contains JSON files that you would like to minify. You can create a module to do that:

const minifyJson = (fileMap, opt, { log }) => {
  // Loop through all the files provided by the user
  for (const [path, content] of fileMap.entries()) {

    // If file is a JSON file...
    if (path.endsWith('.json')) {
      // ...Replace the content of the file with a minified version
      fileMap.set(path, JSON.stringify(JSON.parse(content)))

      // Use the log function provided by the engine to log useful informations
      log(`Minify JSON file: ${filepath}`)
    }
  }
}

You JSON-minifier module can then be added to the list of modules:

const builder = require('@deskeen/web-builder')

await builder.build({
  source: [
    '/www/html/index.html',
    '/www/data/data.json',
  ],
  modules: [
    minifyJson
  ]
})

For more concrete examples, you can have a look at the source files of the existing modules.

Contact

You can reach me at {my_firstname}@{my_name}.fr

Licence

MIT Licence - Copyright (c) Morgan Schmiedt