Skip to content

amarant/git-revision-rspack-plugin

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

git-revision-rspack-plugin

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

Usage

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

Plugin API

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()),
    }),
  ],
}

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('@amarant/git-revision-rspack-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('@amarant/git-revision-rspack-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('@amarant/git-revision-rspack-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('@amarant/git-revision-rspack-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('@amarant/git-revision-rspack-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('@amarant/git-revision-rspack-plugin')

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

About

๐Ÿ— Rspack plugin that generates VERSION and COMMITHASH files during build

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 50.8%
  • Shell 47.4%
  • JavaScript 1.8%