Simple rspack plugin that generates VERSION
and COMMITHASH
files during build based on a local git repository.
Given a rspack project, install it as a local development dependency:
npm install --save-dev @amarant/git-revision-rspack-plugin
Then, simply configure it as a plugin in the rspack config:
const { GitRevisionPlugin } = require('@amarant/git-revision-rspack-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
The VERSION
, COMMITHASH
, LASTCOMMITDATETIME
and BRANCH
are also exposed through a public API.
Example using the DefinePlugin:
const rspack = require('@rspack/core')
const { GitRevisionPlugin } = require('@amarant/git-revision-rspack-plugin')
const gitRevisionPlugin = new GitRevisionPlugin()
module.exports = {
plugins: [
gitRevisionPlugin,
new rspack.DefinePlugin({
VERSION: JSON.stringify(gitRevisionPlugin.version()),
COMMITHASH: JSON.stringify(gitRevisionPlugin.commithash()),
BRANCH: JSON.stringify(gitRevisionPlugin.branch()),
LASTCOMMITDATETIME: JSON.stringify(gitRevisionPlugin.lastcommitdatetime()),
}),
],
}
The plugin requires no configuration by default, but it is possible to configure it to support custom git workflows.
If you need lightweight tags support, you may turn on lightweightTags
option in this way:
const { GitRevisionPlugin } = require('@amarant/git-revision-rspack-plugin')
module.exports = {
plugins: [
new GitRevisionPlugin({
lightweightTags: true,
}),
],
}
If you need branch name support, you may turn on branch
option in this way:
const { GitRevisionPlugin } = require('@amarant/git-revision-rspack-plugin')
module.exports = {
plugins: [
new GitRevisionPlugin({
branch: true,
}),
],
}
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('@amarant/git-revision-rspack-plugin')
module.exports = {
plugins: [
new GitRevisionPlugin({
commithashCommand: 'rev-list --max-count=1 --no-merges HEAD',
}),
],
}
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('@amarant/git-revision-rspack-plugin')
module.exports = {
plugins: [
new GitRevisionPlugin({
versionCommand: 'describe --always --tags --dirty',
}),
],
}
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('@amarant/git-revision-rspack-plugin')
module.exports = {
plugins: [
new GitRevisionPlugin({
branchCommand: 'rev-parse --symbolic-full-name HEAD',
}),
],
}
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('@amarant/git-revision-rspack-plugin')
module.exports = {
plugins: [
new GitRevisionPlugin({
branchCommand: 'log -1 --format=%ci',
}),
],
}