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

rollup-plugin-banner2

v1.3.1

Published

Rollup plugin to add banner in built files

Downloads

26,763

Readme

rollup-plugin-banner2

Introduction

Rollup plugin to prepend content before bundled js code.

Why

rollup itself contains output.banner option. The difference between this plugin and the output.banner parameter provided by the rollup is that the banner will not be cleaned up - for example by rollup-plugin-uglify plugin, the output file will not contain the output.banner parameter you set. rollup-plugin-banner2 solves this problem.

There is another banner plugin: https://github.com/yingye/rollup-plugin-banner . Unfortunately, it looks NOT MAINTAINED for quite some time now. The main differences are described below.

Usage

Install the plugin with NPM:

npm install --save-dev rollup-plugin-banner2

Add it to your rollup configuration:

import banner2 from 'rollup-plugin-banner2'

export default {
  plugins: [
    banner2(
      () => `
    /**
     * rollup-plugin-banner2
     */
    `,
    ),
  ],
}

Comparison with rollup-plugin-banner

  • banner2 supports sourcemaps
  • banner2 supports adding different banner to different chunks based on ChunkInfo (for more info see https://rollupjs.org/ )
  • banner2 does not support file path option that loads a file content and uses that as a banner. It should be easy enough to call fs.readFileSync yourself
  • banner2 does not support injecting values from package.json to banner via <%= pkg.author %> etc.
  • banner2 does not add JS comments as a wrapper to every banner automatically. You can explicitly use the option {formatter: 'docBlock}.

The missing features could be added if someone actually needs them.

API

banner2(resolveBanner, options)

See the typescript definition for more info.

resolveBanner

The resolveBanner function returns a banner as

  • string
  • stringifiable object, i.e. having toString method, such as Buffer
  • any falsy value for an empty banner
  • a Promise resolving any of the values mentioned above

options

  • sourcemap - enable/disable sourcemap. true by default
  • formatter - transform banner. No transform by default. Possible options:
    • 'docBlock' - i.e. /** & */\n
    • 'docBlockAndGap' - i.e. /** & */\n\n

Contributing

  • new PRs accepted :-)
  • always cover your changes by tests
  • always mention your changes in the CHANGELOG.md
  • always update typescript definition file when relevant to your changes, and possibly the docs.