handy-gi

3.4.0 • Public • Published

Handy .gitignore generator

Check handy-gi-cli for the command line version

JavaScript Style Guide

Build Status Greenkeeper badge Commitizen friendly npm

A package that automatically generates a suitable .gitignore string that fits your needs by detecting the directory contents, OS, Text editors and so on ...etc.

It utilizes official GitHub’s collection .gitignore templates.

Installation

$ npm install --save handy-gi

How it works

Handy-gi simply runs a bunch of checkers (called matchers) against the given directory, a matcher is a simple JavaScript code that tries to infer whether the contents of that directory matches its specification or not. Take a look at the Node.js as an example:

// a couple of imports ...
 
export const info = {
  name: 'Node.js',  // A humanized name
 
  template: 'Node', // must match the file name (with ext) of the official
                    // GitHub's collection.
 
  global: false     // whether or not the .gitignore file lives inside
                    // 'templates/Global' folder
}
 
export const match = async (files) => {
  // The pattern we test against
  const pattern = '**/package.json'
 
  // Try to find 'package.json' ?
  const matches = files.filter(byGlob(pattern))
 
  // Did we?
  return matches.length > 0
}

See! very simple

NOTE: matchers can also perform other checks, such as OS, available editors ..etc

After finding all matches, Handy-gi then will build the final .gitignore string for you :)

Usage

var gi = require('handy-gi').ignore
 
gi.ignore('path/to/your/target/folder')
  .then((gitignore) => {
    // Do what you want with the produced .gitignore string
  })

Supported templates

See templates folder to see which of the GitHub's collection templates are currently supported.

Modules

generate

Iterate over a list of template pairs to generate a string containing all corrspondent .gitignore files contents

Parameters

  • tempaltesList Array of {name, template} pairs of target templates

Examples

generate([{name: 'Node.js', template: 'Node', global: false}])
 .then(gi => { console.log(gi) })
// outputs the following string
// ### Node.js ###
// # Logs
// logs
// .log
// ...

Returns Promise with the full .gitignore string

match

Asynchronously matches the given files list against all available matchers

Parameters

  • files Array to match against

Examples

match(['README.md', 'package.json'])
 .then(matchers => { console.log(matchers) })
// outputs: [{name: 'Node.js', template: 'Node'}]

Returns Promise with an array of { name, tempalte} of the corresponding matchers

License

MIT © Ahmed Tajelsir

Package Sidebar

Install

npm i handy-gi

Weekly Downloads

6

Version

3.4.0

License

MIT

Last publish

Collaborators

  • z0al