LoginSignup
8
10

More than 5 years have passed since last update.

webpack4: ライセンスコメントを挿入したい

Posted at

要望

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の内容は簡単に呼び出せるんですね。知りませんでした。
:link: node.js - Is there a way to get version from package.json in nodejs code? - Stack Overflow

複数行のコメントの場合

混乱しないように、raw: trueにして前後のコメント記号の挿入を阻止したほうがいいと思います。
:link: オプションの説明

webpack.config.js
  plugins: [
    new webpack.BannerPlugin({
      banner: `
/*!
 * ${pjson.name} v${pjson.version}
 * (c) ${pjson.author}
 * license: ${pjson.license}
 */
`,
      raw: true
    })
  ]
};
8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10