template-banner-webpack-plugin v1.1.2
TemplateBannerPlugin
Adds the data of a package from package.json to the top of each generated chunk. (or from any other json or js file)
Install
$ yarn add --dev template-banner-webpack-plugin
# or
$ npm i --save-dev template-banner-webpack-pluginUsage
Import the plugin module into webpack configuration.
const TemplateBannerPlugin = require('template-banner-webpack-plugin');Then use this plugin with some options.
new TemplateBannerPlugin(banner)
// or
new TemplateBannerPlugin(options)new TemplateBannerPlugin({
banner: `<filename>: <chunk.name> <chunk.ids> <hash> <chunk.hash>
{name} v{version}
(c) 2017-{year} {author}
Released under the {license}.`,
default(data) {
return {
year: (new Date()).getFullYear(),
license: `${data.license} License`
};
},
});Then output files has template banner like this.
/*!
* input.js: main 0 add0afa23daa62148cae 9761215c7cb0ac58e442806feccefa72
* pretty-checkbox-vue v1.1.2
* (c) 2017-2018 Hamed Ehtesham
* Released under the MIT License.
*/If you have discovered a 🐜 or have a feature suggestion, feel free to create an issue on Github.
Options
new TemplateBannerPlugin(options);| Name | Type | Default Value | Description |
|---|---|---|---|
banner | String | '{name} v{version}' | the banner template as string, to add to the top of each generated chunk; it will be wrapped in a comment |
raw | Boolean | false | if true, banner will not be wrapped in a comment |
default | Object or Function | it is the data to be available in banner via template. any field that exist here would override the fields of json or js file. if it's a function data would be passed to it as an object like this default(data) then this function can manipulate the data and return the new data | |
path | String | try to find your current directory or use webpack context to locate your filename and if fails to do that throws error | |
filename | String | 'package.json' | file to use for data could be json or js (should exports (module.exports (commonjs2)) an object or a function that returns an object) |
test | String or RegExp or Array | if the argument is a string it will be compared with the whole chunk's filename, string elements in array will do the same | |
include | String or RegExp or Array | it's not the path; it works just like test | |
exclude | String or RegExp or Array | it's not the path; it works just like test but to exclude files instead of including theme |
Template
Use {} for all data from default values or json or js file
Use <> for all chunk specific data that is <hash>, <chunk>, <filename>, <basename>, <query>
Note that you can select json or js exported object properties like this: {repository.url} or {keywords[0]}, {keywords[3]}
Note that <chunk> is an object too that you can use its properties like <chunk.name>, <chunk.ids[0]> or <chunk.hash>
for more information about chunk properties see this
Removing all other comments
If you want to remove all other comments, use uglifyjs-webpack-plugin.
for more information about uglifyjs-webpack-plugin options see this
$ yarn add --dev uglifyjs-webpack-plugin
# or
$ npm install --save-dev uglifyjs-webpack-plugin const UglifyJSPlugin = require('uglifyjs-webpack-plugin');and also you must use it after UglifyJSPlugin.
// ...
plugins: [
new UglifyJSPlugin(),
new TemplateBannerPlugin()
]
// ...License
Released under The MIT License. Copyright (c) hamed-ehtesham.