UNPKG

globify-gitignore

Version:
240 lines (153 loc) 5.94 kB
<!-- Generated via running `pnpm run docs` --> <h1 align="center">globify-gitignore</h1> <p> <a href="https://github.com/aminya/patha/actions/workflows/CI.yml" target="_blank"> <img alt="CI" src="https://github.com/aminya/patha/actions/workflows/CI.yml/badge.svg"> </a> <a href="https://www.npmjs.com/package/globify-gitignore" target="_blank"> <img alt="Version" src="https://img.shields.io/npm/v/globify-gitignore.svg"> </a> <a href="#" target="_blank"> <img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg" /> </a> </p> > Convert Gitignore to Glob patterns <!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} --> <!-- code_chunk_output --> - [Install](#install) - [Usage](#usage) - [Main API](#main-api) - [`GlobifiedEntry` (type)](#globifiedentry-type) - [`globifyGitIgnoreFile` (function)](#globifygitignorefile-function) - [`globifyGitIgnore` (function)](#globifygitignore-function) - [Other API](#other-api) - [`globifyPath` (function)](#globifypath-function) - [`globifyDirectory` (function)](#globifydirectory-function) - [`globifyGitIgnoreEntry` (function)](#globifygitignoreentry-function) - [`getGlob` (function)](#getglob-function) - [`globSorter` (variable)](#globsorter-variable) - [`uniqueMatcher` (function)](#uniquematcher-function) - [`uniqueGlobs` (function)](#uniqueglobs-function) - [`uniqueSortGlobs` (function)](#uniquesortglobs-function) - [`posixifyPath` (function)](#posixifypath-function) - [`posixifyPathNormalized` (function)](#posixifypathnormalized-function) - [`getPathType` (function)](#getpathtype-function) - [🤝 Contributing](#contributing) <!-- /code_chunk_output --> ## Install ```sh npm install --save globify-gitignore ``` `globify-gitignore` is tiny and treeshakable. ## Usage Use `globifyGitIgnoreFile` to pass the path to a directory that has a `.gitignore` file. ```ts import { globifyGitIgnoreFile, globifyGitIgnore } from "globify-gitignore" // ./ is the path that has a .gitignore globifyGitIgnoreFile("./") ``` Use `globifyGitIgnore` to directly globify the gitignore content ```ts import { globifyGitIgnore } from "globify-gitignore" const gitignoreContent = `# OS metadata .DS_Store Thumbs.db # Node node_modules package-lock.json # TypeScript *.tsbuildinfo # Build directories dist ` const gitignoreDirectory = __dirname // An array of `GlobifiedEntry` objects. Each object has a `glob` property and an `included` property const globifiedEntries = await globifyGitIgnore(gitignoreContent, gitignoreDirectory) ``` ## Main API <!-- INSERT GENERATED DOCS START --> ### `GlobifiedEntry` (type) The result of a globified gitignore entry. The glob pattern is in the `glob` property, and the `included` property tells if the pattern is an included file or an excluded file ```ts export type GlobifiedEntry = { /** The glob pattern calculated from the gitignore pattern */ glob: string /** * If `true`, this means that the pattern was prepended by `!` in the gitignore file, and so it is an included file * Otherwise, it is an excluded file */ included: boolean } ``` ### `globifyGitIgnoreFile` (function) Parse and globy the `.gitingore` file that exists in a directory **Parameters:** - gitIgnoreDirectory (`string`) - The given directory that has the `.gitignore` file - absolute (`boolean`) - [false] If true, the glob will be absolute **returns:** Promise<GlobifiedEntry[]> ### `globifyGitIgnore` (function) Globify the content of a gitignore string **Parameters:** - gitIgnoreContent (`string`) - The content of the gitignore file - gitIgnoreDirectory (`string`) - The directory of gitignore - absolute (`boolean`) - [false] If true, the glob will be absolute **returns:** Promise<GlobifiedEntry[]> ## Other API ### `globifyPath` (function) **Parameters:** - givenPath (`string`) - The given path to be globified - givenDirectory (`string`) - [process.cwd()] The cwd to use to resolve relative path names - absolute (`boolean`) - [false] If true, the glob will be absolute **returns:** Promise<[GlobifiedEntry] | [GlobifiedEntry, GlobifiedEntry]> ### `globifyDirectory` (function) Globifies a directory **Parameters:** - givenDirectory (`string`) - The given directory to be globified **returns:** string ### `globifyGitIgnoreEntry` (function) **Parameters:** - gitIgnoreEntry (`string`) - One git ignore entry (it expects a valid non-comment gitignore entry with no surrounding whitespace) - gitIgnoreDirectory (`string`) - The directory of gitignore - absolute (`boolean`) - [false] If true, the glob will be absolute **returns:** Promise<[GlobifiedEntry] | [GlobifiedEntry, GlobifiedEntry]> ### `getGlob` (function) **Parameters:** - g (`GlobifiedEntry`) **returns:** string ### `globSorter` (variable) ### `uniqueMatcher` (function) **Parameters:** - a (`GlobifiedEntry`) - b (`GlobifiedEntry`) **returns:** boolean ### `uniqueGlobs` (function) **Parameters:** - globs (`GlobifiedEntry[]`) **returns:** any ### `uniqueSortGlobs` (function) **Parameters:** - globs (`GlobifiedEntry[]`) **returns:** any ### `posixifyPath` (function) Converts given path to Posix (replacing \ with /) **Parameters:** - givenPath (`string`) - Path to convert **returns:** string ### `posixifyPathNormalized` (function) Converts given path to Posix (replacing \ with /) and removing ending slashes **Parameters:** - givenPath (`string`) - Path to convert **returns:** string ### `getPathType` (function) Get the type of the given path **Parameters:** - givenPath - Absolute path - filepath (`string`) **returns:** Promise<PATH_TYPE> <!-- INSERT GENERATED DOCS END --> ## 🤝 Contributing You can sponsor my work here: https://github.com/sponsors/aminya Pull requests, issues and feature requests are welcome. See the [Contributing guide](https://github.com/aminya/patha/blob/master/CONTRIBUTING.md).