@netlify/git-utils
Utility for dealing with modified, created, deleted files since a git commit
Last updated 18 days ago by ehmicky .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @netlify/git-utils 
SYNC missed versions from official npm registry.

Coverage Status Build

Git Utility

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

Usage

/* Export the Netlify Plugin */
module.exports = {
  onPreBuild: ({ utils }) => {
    const { git } = utils

    /* Do stuff if files modified */
    if (git.modifiedFiles.length) {
      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.

module.exports = {
  onPreBuild: ({ 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.

Example:

const cssFiles = 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

Current Tags

  • 1.0.1                                ...           latest (18 days ago)

8 Versions

  • 1.0.1                                ...           18 days ago
  • 1.0.0                                ...           2 months ago
  • 0.2.2                                ...           4 months ago
  • 0.2.1                                ...           4 months ago
  • 0.2.0                                ...           6 months ago
  • 0.1.0                                ...           7 months ago
  • 0.0.2                                ...           7 months ago
  • 0.0.1                                ...           7 months ago
Downloads
Today 0
This Week 55
This Month 60
Last Day 7
Last Week 39
Last Month 185
Dependencies (5)
Dev Dependencies (1)
Dependents (1)

Copyright 2014 - 2016 © taobao.org |