handy-gi
v3.4.0
Published
A node package that automatically detects and generates suitable `.gitignore` content based on a given directory content(in addition to some other hacks). It utilizes official GitHub's [collection] for `.gitignore` templates.
Downloads
16
Readme
Handy .gitignore
generator
Check handy-gi-cli for the command line version
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