1. git-revision-webpack-plugin
[![npm version](https://badge.fury.io/js/git-revision-webpack-plugin.svg)](https://badge.fury.io/js/git-revision-webpack-plugin) [![downloads](https://img.shields.io/npm/dm/git-revision-webpack-plugin.svg?style=flat-square)](https://www.npmjs.com/package/
git-revision-webpack-plugin
Package: git-revision-webpack-plugin
Created by: pirelenito
Last modified: Sat, 18 Jun 2022 08:34:39 GMT
Version: 5.0.0
License: MIT
Downloads: 786,908
Repository: https://github.com/pirelenito/git-revision-webpack-plugin

Install

npm install git-revision-webpack-plugin
yarn add git-revision-webpack-plugin

git-revision-webpack-plugin

npm version
downloads
Code Climate

Simple webpack plugin that generates VERSION and COMMITHASH files during build based on a local git repository.

Usage

Given a webpack 5 project (check below for old webpack versions), install it as a local development dependency:

 npm install --save-dev git-revision-webpack-plugin

Then, simply configure it as a plugin in the webpack config:

 const { GitRevisionPlugin } = require('git-revision-webpack-plugin')

module.exports = {
  plugins: [new GitRevisionPlugin()],
}

It outputs a VERSION based on git-describe such as:

v0.0.0-34-g7c16d8b

A COMMITHASH such as:

7c16d8b1abeced419c14eb9908baeb4229ac0542

And (optionally when branch is enabled) a BRANCH such as:

master

Path Substitutions

It is also possible to use path substitutions on build to get the revision, version or branch as part of output paths.

  • [git-revision-version]
  • [git-revision-hash]
  • [git-revision-branch] (only when branch is enabled)
  • [git-revision-last-commit-datetime]

Example:

 module.exports = {
  output: {
    publicPath: 'http://my-fancy-cdn.com/[git-revision-version]/',
    filename: '[name]-[git-revision-hash].js',
  },
}

Plugin API

The VERSION, COMMITHASH, LASTCOMMITDATETIME and BRANCH are also exposed through a public API.

Example using the DefinePlugin:

 const webpack = require('webpack')
const { GitRevisionPlugin } = require('git-revision-webpack-plugin')
const gitRevisionPlugin = new GitRevisionPlugin()

module.exports = {
  plugins: [
    gitRevisionPlugin,
    new webpack.DefinePlugin({
      VERSION: JSON.stringify(gitRevisionPlugin.version()),
      COMMITHASH: JSON.stringify(gitRevisionPlugin.commithash()),
      BRANCH: JSON.stringify(gitRevisionPlugin.branch()),
      LASTCOMMITDATETIME: JSON.stringify(gitRevisionPlugin.lastcommitdatetime()),
    }),
  ],
}

Configuration

The plugin requires no configuration by default, but it is possible to configure it to support custom git workflows.

lightweightTags: false

If you need lightweight tags support, you may turn on lightweightTags option in this way:

 const { GitRevisionPlugin } = require('git-revision-webpack-plugin')

module.exports = {
  plugins: [
    new GitRevisionPlugin({
      lightweightTags: true,
    }),
  ],
}

branch: false

If you need branch name support, you may turn on branch option in this way:

 const { GitRevisionPlugin } = require('git-revision-webpack-plugin')

module.exports = {
  plugins: [
    new GitRevisionPlugin({
      branch: true,
    }),
  ],
}

commithashCommand: 'rev-parse HEAD'

To change the default git command used to read the value of COMMITHASH.

This configuration is not not meant to accept arbitrary user input and it is executed by the plugin without any sanitization.

 const { GitRevisionPlugin } = require('git-revision-webpack-plugin')

module.exports = {
  plugins: [
    new GitRevisionPlugin({
      commithashCommand: 'rev-list --max-count=1 --no-merges HEAD',
    }),
  ],
}

versionCommand: 'describe --always'

To change the default git command used to read the value of VERSION.

This configuration is not not meant to accept arbitrary user input and it is executed by the plugin without any sanitization.

 const { GitRevisionPlugin } = require('git-revision-webpack-plugin')

module.exports = {
  plugins: [
    new GitRevisionPlugin({
      versionCommand: 'describe --always --tags --dirty',
    }),
  ],
}

branchCommand: 'rev-parse --abbrev-ref HEAD'

To change the default git command used to read the value of BRANCH.

This configuration is not not meant to accept arbitrary user input and it is executed by the plugin without any sanitization.

 const { GitRevisionPlugin } = require('git-revision-webpack-plugin')

module.exports = {
  plugins: [
    new GitRevisionPlugin({
      branchCommand: 'rev-parse --symbolic-full-name HEAD',
    }),
  ],
}

lastCommitDateTimeCommand: 'log -1 --format=%cI'

To change the default git command used to read the value of LASTCOMMITDATETIME.

This configuration is not not meant to accept arbitrary user input and it is executed by the plugin without any sanitization.

 const { GitRevisionPlugin } = require('git-revision-webpack-plugin')

module.exports = {
  plugins: [
    new GitRevisionPlugin({
      branchCommand: 'log -1 --format=%ci',
    }),
  ],
}

Outdated webpack

If your project is not running on Webpack 5, you will need older versions of this package.

Webpack 4

npm install [email protected]

Webpack 3 or older

npm install [email protected]

Check issue 29 for more information.

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code