Add dynamic banner/license comments to files in a build process.
$ npm install -g bannerizeBanner templates use the EJS templating language. Templates are passed the following properties:
pkg: A representation of the nearestpackage.jsonfile.date: A JavaScript Date object.
A simple banner might look something like:
/*! <%= pkg.name %> | <%= pkg.version %>
* (c) <%= date.getFullYear() %> <%= pkg.license %>
*/
And render to:
/*! bannerize | 1.0.0
* (c) 2015 MIT
*/
bannerize ships with a CLI command. Its options vary from the programmatic API. To see all its options, use:
$ bannerize --helpAn example usage might look like:
$ bannerize *.js *.css --banner=foo/bar.ejsThe bannerize module can be used in your programs. It exports a single function, bannerize, which takes two arguments:
pattern{String|Array}: A string or array of glob pattern(s) to which to apply the banner.[options]{Object}: An object containing optional values.
The return value of bannerize() is a Promise that resolves with an array of all the file paths it modified.
-
bannerA banner file location. Defaults tobanner.ejsin thecwd. -
cwdOverride thecwdfor all paths passed tobannerize. Relative paths will be relative toprocess.cwd(). Defaults toprocess.cwd(). -
lineBreak(orlineBreaks) Sets the linebreak ('CRLF','LF'). Defaults to'LF'.
Let's say you have a project with a structure like this:
├─┬ dist/
│ └── output.min.js
├─┬ scripts/
│ ├── add-banner.js
| └── banner.ejs
└── package.json
And let's say you want scripts/add-banner.js to add a banner to dist/output.min.js using scripts/banner.ejs as a template. You'll need to know the location of the output file and the banner template and the script might look like this:
const bannerize = require('bannerize');
// The paths here are relative to the current working directory. For the sake
// of example, let's say we don't know what it might be; so, we'll use
// __dirname (which is scripts/ in our outlined directory structure above).
//
// We pass in the path to our output file(s), relative to __dirname:
bannerize('../dist/output.min.js', {
// This is the path to our banner template file, relative to __dirname.
banner: 'banner.ejs',
// Finally, we specify the cwd as the directory where this file is
// (i.e. scripts/)
cwd: __dirname
}).
// bannerize returns a Promise which resolves with a list of files. We log
// the list here for debugging.
then((files) => {
console.log('Added banner(s) to ' + files.join(', '));
}, () => {
console.error('Failed adding banner(s)!');
});