Insert the license text of the module used for each bundled file at the beginning of each.
$ yarn add license-banner-webpack-plugin --dev
# or
$ npm install license-banner-webpack-plugin --save-dev
Import the plugin module into webpack configuration.
const LicenseBannerPlugin = require('license-banner-webpack-plugin');
Then use this plugin with some options.
new LicenseBannerPlugin({
licenseTemplate: function(pkg) {
return `${pkg.name}, ${pkg.version}, ${pkg.author}, ${pkg.license}, ${pkg.repository}`;
},
licenseDirectories: [
path.join('/path/to/node_modules')
]
});
Then output file has license banner like this.
/*
[email protected]
license: MIT
author: Tobias Koppers @sokra
repository: https://github.com/webpack/webpack.git:
(...and any other modules you use in your code)
*/
new LicenseBannerPlugin(options);
name | type | description |
---|---|---|
licenseTemplate(pkg) |
Function | license template pattern. argument pkg is each packages information object. you can use pkg.name pkg.version pkg.author pkg.license pkg.repository . |
licenseDirectories |
Array | package modules directories. The default is node_modules directory. |
If you want to remove all other comments, use uglifyjs-webpack-plugin
instead of plugins in webpack.
$ npm install uglifyjs-webpack-plugin --save-dev
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
and also you must be set behind UglifyJSPlugin.
// ...
plugins: [
new UglifyJSPlugin(),
new LicenseBannerPlugin()
]
// ...
mode
option has added from webpack v4.
If you use production
mode and also want to use license-banner-webpack-plugin, you must set optimization.minimize
option to false
.
// ...
mode: 'production',
optimization: {
minimize: false
}
// ...