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

@webmodule/bundle

v5.7.0

Published

Bundle and transform javascript files, stylesheets, html imports and update DOM document

Downloads

23

Readme

@webmodule/bundle -- bundle assets of an html document

Features

  • recursively concatenate scripts, styles, and link[rel=import]
  • minify scripts and stylesheets
  • vendor autoprefixing of stylesheets, configurable through env, see browserslist
  • bundle everything in one single js file, or split in js / css.
  • prepend or append additional scripts, styles, or imports
  • exclude or ignore a tag by matching a url substring new in version 1.8.0: or a minimatch pattern with wildcard (see example below)
  • modify the DOM and outputs html
  • downloads remote scripts or stylesheets with whitelist (new in 1.7.0)
  • allows custom asynchronous DOM modifications (new in 1.6.0)
  • any kind of modules are supported, thanks to rollup
  • relative imports can be resolved using modules option.

Install

npm install -g @webmodule/bundle

Usage

This saves modified html file, and styles are bundled into js file:

webmodule-bundle
--html bundles/index.html
--js /bundles/index.js
-x jquery.js -x moment.js -i index.js
--prepend '/js/custom-elements.js'
public/index.html

This saves styles separately:

webmodule-bundle
--html bundles/index.html
--css /bundles/index.css
--js /bundles/index.js
--exclude jquery.js
--prepend '/js/custom-elements.js'
public/index.html

This does not compress files, and specifies root dir

webmodule-bundle
--concatenate
--html bundles/index.html
--css /bundles/index.css
--js /bundles/index.js
--exclude jquery.js
--prepend '/js/custom-elements.js'
--root public
public/templates/index.html

A tool to bundle a bunch of files:

webmodule-bundle-all
  --filter "**/excluded-*.*"
  --common common.html
  --suffix 1.0.0
  "templates/*.html"

it bundles common files then processes all files matching pattern and put everything with suffixes in a bundles/ directory.

See webmodule-bundle-all -h for more command-line options.

Paths are relative to the input file path.

API

webmoduleBundle(path, opts, cb)

where path is the path of the html file to process, and opts has these properties:

  • exclude: array of matched strings
  • ignore: array of matched strings
  • append: array of strings
  • prepend: array of strings
  • js: path relative to html file
  • css: path relative to html file
  • html: path relative to root
  • root: absolute mount path, defaults to current directory
  • custom: function(dom, opts, data) {} returning a promise
  • remotes: list of allowed remote domains to download from
  • modulesPrefix: the mount path for resolving node_modules ( becomes /node_modules/xxx/index.js), defaults to "/".
  • modulesRoot: where node modules are to be found. Defaults to ".".
  • assets: if set, copy stylesheets assets to this path relative to root.
  • analyze: boolean, get information about bundle

Strings are matched simply by searching a substring.

Tags without src or href attributes can be excluded or ignored by passing a dot ".", otherwise they are bundled.

Omitting js, css options skips the insertion of the corresponding tag in the html document.

If cb is omitted, returns a promise.

Returns an object with following properties:

  • js, css, html: the resulting js, css, html
  • scripts, stylesheets, assets, imports: the lists of processed files

Help

webmodule-bundle --help

License

MIT, see LICENSE file.