Retrieve list of files ignored/included by Git, NPM, Yarn, JSR, VSCE or other tools.
Node.js 18 or later
- Reader. Get a list of included files using configuration file readers, not command-line wrappers.
- Plugins. Built-in targets for popular tools. Use custom
targets by implementing/extending the
Targetinterface. - TypeScript. Written in TypeScript with type definitions included.
- Lightweight. Minimal dependencies for fast performance and small bundle size.
- Easy-to-modify. Well-written and MIT-licensed.
- Browser. Can be bundled for browser use. See
ScanOptions.fsandimport ... "view-ignored/browser". - Windows. Windows paths are converted to Unix paths for compatibility with
memfsbased tests and browsers.
Note
Despite the name of the package being "view-ignored",
the primary purpose is to get the list of
included files, i.e., files that are not ignored.
You can invert the results if you need the ignored files
by setting the invert option to true.
import * as vign from "view-ignored"
import { Git as target } from "view-ignored/targets"
const ctx = await vign.scan({ target })
ctx.paths.has(".git/HEAD") // false
ctx.paths.has("src") // true
const match = ctx.paths.get("src")
if (match.kind === "external") {
console.log(match.source.path) // ".gitignore"
console.log(match.pattern) // "src/**"
}import {
type Extractor,
extractGitignore,
signedPatternIgnores,
signedPatternCompile,
type SignedPattern,
} from "view-ignored/patterns"
import type { Target } from "view-ignored/targets"
const extractors: Extractor[] = [
{
extract: extractGitignore,
path: ".gitignore",
},
{
extract: extractGitignore,
path: ".git/info/exclude",
},
]
const internal: SignedPattern = {
exclude: [".git", ".DS_Store"],
include: [],
compiled: null,
}
signedPatternCompile(internal)
export const Git: Target = {
extractors,
ignores(o) {
return signedPatternIgnores({
...o,
internal,
root: "/",
target: Git,
})
},
}
const ctx = await vign.scan({ target })import * as vign from "view-ignored"
import { NPM as target } from "view-ignored/targets"
const stream = await vign.scanStream({ target })
stream.on("dirent", console.log)
stream.on("end", (ctx) => {
ctx.paths.has(".git/HEAD") // false
ctx.paths.has("node_modules/") // false
ctx.paths.has("package.json") // true
})
stream.start() // importantTo avoid imports from node:fs and node:process modules,
use the browser submodule, which requires some additional options.
import * as vign from "view-ignored/browser"
// or view-ignored/browser/scan
import { Git as target } from "view-ignored/targets"
export const cwd = process.cwd()
const customFs = {
promises: {
opendir,
readFile,
},
}
vign.scan({ target, cwd, fs })The following built-in scanners are available:
- Git (implementation)
- Reads
.gitignoreand.git/info/excludebut does not consider global settings. - Starts searching from
/. - Check this scanner by running
git ls-files --others --exclude-standard --cached.
- Reads
- NPM (implementation)
- Expecting to be compatible with PNPM, and others.
- Reads
package.jsonfilesfield,.npmignoreand.gitignore. - Starts searching from
.(current working directory). - No additional checks for
name,versionorpublishConfig. - Check this scanner by running
npm pack --dry-run.
- Bun (implementation)
- Bun tries to mimic NPM, but that does not mean it behaves the same way.
- Check this scanner by running
bun pm pack --dry-run.
- Yarn (implementation)
- Modern Berry behavior.
- Reads
package.jsonfilesfield,.npmignoreand.gitignore. - Requires
package.json: includes paths frommain,module,browserandbin. - Starts searching from
.(current working directory). YarnClassicis available. (implementation)
- VSCE (implementation)
- Reads
package.jsonfilesfield,.vscodeignoreand.gitignore. - Starts searching from
.(current working directory). - Check this scanner by running
vsce ls.
- Reads
- JSR (implementation)
- Reads
jsr.json(c)includeandexcludefields. - Starts searching from
.(current working directory).
- Reads
- Deno (implementation)
- Reads
jsr.json(c)anddeno.json(c)includeandexcludefields. - Starts searching from
.(current working directory).
- Reads
- https://jsr.io/@m234/path - Utility to sort, convert and format paths.
MIT License. See LICENSE.txt for details.