git-variables
v1.1.0
Published
Git variables for NodeJS processes
Downloads
4
Readme
Static constants fetched from git
for your Node processes.
const { GIT_BRANCH, GIT_COMMIT } = require('git-variables');
Executes synchronously on startup to reduce impact & be ready to go immediately. Use in internal build tools or user-facing applications.
Installation
$ npm install git-variables
- Requires
git
to be installed. - Must be run within a repository - suitable for monorepos too.
API
Variable | Command | Example
---- | ---- | ----
GIT_DESCRIBE
| git describe --always
| 1089e4f
GIT_DESCRIBE_LIGHT
| git describe --always --tags
| 1089e4f
GIT_COMMIT
| git rev-parse --short HEAD
| 1089e4f
GIT_SHA1
| git rev-parse HEAD
| 1089e4fc62e43d7fc4a7323aaa3d09cd6cccc468
GIT_BRANCH
| git rev-parse --abbrev-ref HEAD
| master
GIT_MESSAGE
| git log -1 --pretty=%B
| Initial commit!\nThis project will change the world!
GIT_MESSAGE_SUBJECT
| git log -1 --pretty=%s
| Initial commit!
GIT_MESSAGE_BODY
| git log -1 --pretty=%b
| This project will change the world!
GIT_USER
| git config user.name
| jdrydn
GIT_EMAIL
| git config user.email
| [email protected]
GIT_IS_DIRTY
| git diff --stat
| false
GIT_REPOSITORY
| git rev-parse --show-toplevel
| git-variables
Examples
AWS-CDK
Reference git variables in your CDK stack definition:
const lambdaNode = require('@aws-cdk/aws-lambda-nodejs');
const { GIT_SHA1 } = require('git-variables');
new lambdaNode.NodejsFunction(this, 'LambdaFunction', {
entry: './script.js',
handler: 'handler',
runtime: lambdaNode.Runtime.NODEJS_12_X,
memorySize: 1024,
timeout: cdk.Duration.seconds(300),
environment: {
COMMIT_SHA1: GIT_SHA1,
NODE_ENV: process.env.NODE_ENV || 'development',
},
});
Serverless Framework
Reference git variables in your serverless.yml
file:
service: example-service
provider: aws
functions:
example-function:
handler: script.handler
environment:
COMMIT_SHA1: ${file(./node_modules/git-variables):GIT_SHA1}
Your Application
Typically, variables from git
would be part of a build process & passed to your application as build arguments or environment variables. But there's nothing stopping you directly using this in your application:
// server.js
const express = require('express');
const { GIT_COMMIT } = require('git-variables');
const app = express();
app.get('/status', (req, res) => {
res.status(200).send(GIT_COMMIT);
});
app.listen(3000);
When deploying, you must remember to keep your .git/
folder:
$ cd /var/app
$ git clone github.com/jdrydn/example
$ cd example/ && npm ci
$ node ./server.js
Notes
Any questions or suggestions please open an issue.