@hzzt/git-revision-webpack-plugin v3.0.8
Git revision webpack plugin
Simple webpack plugin that generates VERSION and COMMITHASH files during build based on a local git repository.
Usage
Given a webpack 4 project (check below for old webpack versions), install it as a local development dependency:
npm install --save-dev git-revision-webpack-pluginThen, simply configure it as a plugin in the webpack config:
var 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-g7c16d8bA COMMITHASH such as:
7c16d8b1abeced419c14eb9908baeb4229ac0542And (optionally when branch is enabled) a BRANCH such as:
masterPath 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)
Example:
module.exports = {
output: {
publicPath: 'http://my-fancy-cdn.com/[git-revision-version]/',
filename: '[name]-[git-revision-hash].js'
}
}Plugin API
The VERSION, COMMITHASH 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()),
})
]
}Configuration
The plugin requires no configuration by default, but it is possible to configure it to support custom git workflows.
hashLength
var GitRevisionPlugin = require('git-revision-webpack-plugin')
module.exports = {
plugins: [
new GitRevisionPlugin({
hashLength: 8
})
]
}lightweightTags: false
If you need lightweight tags support, you may turn on lightweightTags option in this way:
var 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:
var 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.
var 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.
var 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.
var GitRevisionPlugin = require('git-revision-webpack-plugin')
module.exports = {
plugins: [
new GitRevisionPlugin({
branchCommand: 'rev-parse --symbolic-full-name HEAD'
})
]
}Outdated webpack
If your project is not using webpack version 4 or greater, you will need to install an older version of this package:
npm install git-revision-webpack-plugin@2.5.1Check issue 29 for more information.