Skip to content

Advanced Usage

Include/Exclude Patterns

Control which files get banners using glob patterns:

js
addBanner({
  content: '/*! ${name} v${version} */',
  include: ['**/*.js', '**/*.mjs'],
  exclude: ['**/*.min.js']
})

Supported Patterns

PatternExampleMatches
Extension match**/*.jsAny .js file
Prefix matchsrc/**Any file under src/
Directory match**/dist/**Any file in dist
Wildcard match*.min.jsfoo.min.js only

Multiple Banners

Use different banners for different file types:

js
addBanner({
  banners: {
    '.js': '/*! ${name} v${version} - JavaScript */',
    '.mjs': '/*! ${name} v${version} - ES Module */',
    '.css': '/* ${name} v${version} - Stylesheet */'
  }
})

Pattern-based Banners

You can also use patterns as keys:

js
addBanner({
  banners: {
    '.js': '/* JS Banner */',
    '**/worker.js': '/* Web Worker */',
    '**/*.min.js': '/* Minified */'
  }
})

Programmatic Usage

Use the plugin programmatically:

js
import { rollup } from 'rollup'
import addBanner from 'rollup-plugin-add-banner'

const bundle = await rollup({
  input: 'src/index.js',
  plugins: [
    addBanner({
      content: '/*! ${name} v${version} */'
    })
  ]
})

await bundle.write({
  file: 'dist/index.js',
  format: 'es'
})

Multiple Output Formats

When generating multiple output formats, each gets the banner:

js
export default {
  input: 'src/index.js',
  output: [
    { file: 'dist/index.cjs', format: 'cjs' },
    { file: 'dist/index.mjs', format: 'es' }
  ],
  plugins: [
    addBanner({
      content: '/*! ${name} v${version} */'
    })
  ]
}

Plugin API

Access banner information at runtime:

js
const plugin = addBanner({
  content: '/*! ${name} v${version} */',
  envVar: 'NODE_ENV'
})

export default {
  plugins: [plugin]
}

// Later in your code
console.log('Resolved banner:', plugin.api.getBanner())
console.log('Will add banner:', plugin.api.shouldAddBanner())
console.log('Template vars:', plugin.api.getVars())

Integration with Other Plugins

With TypeScript Plugin

js
import typescript from '@rollup/plugin-typescript'
import addBanner from 'rollup-plugin-add-banner'

export default {
  plugins: [
    typescript(),
    addBanner({ content: '/*! ${name} v${version} */' })
  ]
}

With Node Resolve Plugin

js
import { nodeResolve } from '@rollup/plugin-node-resolve'
import addBanner from 'rollup-plugin-add-banner'

export default {
  plugins: [
    nodeResolve(),
    addBanner({ content: '/*! ${name} v${version} */' })
  ]
}

Dynamic Banner Generation

Generate banner content dynamically:

js
const banner = (() => {
  const year = new Date().getFullYear()
  return `/*! ${pkg.name} v${pkg.version} (c) ${year} ${pkg.author} */`
})()

addBanner({ content: banner })

Environment-based Configuration

Different banners for different environments:

js
const isProduction = process.env.NODE_ENV === 'production'

addBanner({
  content: isProduction
    ? '/*! ${name} v${version} - Production Build */'
    : '/*! ${name} v${version} - Development Build */',
  // Or use envVar option for automatic checking
  envVar: isProduction ? undefined : 'DISABLE_BANNER'
})

Released under the MIT License.