@netlify/git-utils
TypeScript icon, indicating that this package has built-in type declarations

5.1.1 • Public • Published

Coverage Status Build

Git Utility

Utility for dealing with modified, created, deleted files since a git commit.

Usage

/* Export the Netlify Plugin */
export const onPreBuild = function ({ utils }) {
  const { git } = utils

  /* Do stuff if files modified */
  if (git.modifiedFiles.length !== 0) {
    console.log('Modified files:', git.modifiedFiles)
  }

  /* Do stuff only if html code edited */
  const htmlFiles = git.fileMatch('**/*.html')
  console.log('html files git info:', htmlFiles)

  if (htmlFiles.edited.length !== 0) {
    console.log('>> Run thing because HTML has changed\n')
  }
  //
  /* Do stuff only if markdown files edited */
  const markdownFiles = git.fileMatch('**/*.md')
  console.log('markdown files git info:', markdownFiles)

  if (markdownFiles.modified.length !== 0) {
    console.log('>> Run thing because Markdown files have been created/changed/deleted\n')
  }

  /* Do stuff only if css files edited */
  const cssFiles = git.fileMatch('**/*.css')
  if (cssFiles.deleted.length !== 0) {
    console.log('>> Run thing because css files have been deleted\n')
    console.log(cssFiles)
  }
}

API

The git util includes the following signature.

export const onPreBuild = function ({ utils }) {
  console.log(utils.git)
  // {
  // fileMatch: [Function], <-- Lookup function. See below
  // modifiedFiles: [ Array of all modified files ],
  // createdFiles: [ Array of all created files ],
  // deletedFiles: [ Array of all deleted files ],
  // commits: [ Array of commits with details ],
  // linesOfCode: [AsyncFunction: linesOfCode] <-- how many lines of code have changed
  // }
  //
}

git.fileMatch() is a glob matcher function to detect the git status of a pattern of files.

export const onPreBuild = function ({ utils }) {
  const cssFiles = utils.git.fileMatch('**/*.css')
  console.log('cssFiles', cssFiles)
  // {
  // modified: [ 'just-changed.css', 'just-changed-two.css' ],
  // created: [ 'just-added.css' ],
  // deleted: [ 'just-deleted.css' ],
  // edited: [ 'just-changed.css', 'just-changed-two.css', 'just-added.css', 'just-deleted.css' ]
  // }
  //
}

Prior art

This was originally found in danger.js and extracted into this utility

/@netlify/git-utils/

    Package Sidebar

    Install

    npm i @netlify/git-utils

    Weekly Downloads

    106,619

    Version

    5.1.1

    License

    MIT

    Unpacked Size

    12.6 kB

    Total Files

    10

    Last publish

    Collaborators

    • youvalv
    • berdav
    • vitaliyr
    • smnh
    • denar90
    • kathmbeck
    • rj-netlify
    • akardet
    • pieh
    • hrishikeshk
    • sarahetter
    • orinokai
    • ericap
    • seanroberts
    • skn0tt
    • mikewen
    • biilmann
    • marcus.netlify
    • jgantunes
    • eduardoboucas
    • netlify-bot
    • nasiba
    • ascorbic