要望
webpackでビルドしたJavaScriptファイルの先頭に、バージョンやライセンスを表記したコメントを挿入したい。
my-plugin.min.js
/*! my-plugin v1.2.3 | Yuusaku Miyazaki <toumin.m7@gmail.com> | license: MIT */
解決策
BannerPluginを使います。
webpackに最初から入っていて、追加のインストールが不要なので楽です。
具体例
下記のようなプラグインを作っているとします。
package.json
{
"name": "my-plugin",
"version": "1.2.3",
"author": "Yuusaku Miyazaki <toumin.m7@gmail.com>",
"license": "MIT",
下記のように設定します。
webpack.config.js
const path = require('path');
const webpack = require('webpack');
const pjson = require('./package.json');
module.exports = {
mode: 'production',
entry: path.join(__dirname, 'src/index.js'),
output: {
filename: pjson.name + '.min.js',
path: path.join(__dirname, 'dist')
},
plugins: [
new webpack.BannerPlugin({
banner: `${pjson.name} v${pjson.version} | ${pjson.author} | license: ${pjson.license}`
})
]
};
package.json
の内容は簡単に呼び出せるんですね。知りませんでした。
node.js - Is there a way to get version from package.json in nodejs code? - Stack Overflow
複数行のコメントの場合
混乱しないように、raw: true
にして前後のコメント記号の挿入を阻止したほうがいいと思います。
オプションの説明
webpack.config.js
plugins: [
new webpack.BannerPlugin({
banner: `
/*!
* ${pjson.name} v${pjson.version}
* (c) ${pjson.author}
* license: ${pjson.license}
*/
`,
raw: true
})
]
};