Add dynamic banner/license comments to files in a build process.
$ npm install -g bannerize
Banner templates use the EJS templating language. Templates are passed the following properties:
pkg
: A representation of the nearestpackage.json
file.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 --help
An example usage might look like:
$ bannerize *.js *.css --banner=foo/bar.ejs
The 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.
-
banner
A banner file location. Defaults tobanner.ejs
in thecwd
. -
cwd
Override thecwd
for 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)!');
});