shelving/util/filemodule

Tiny helpers for splitting filenames into base name and extension. They exist so callers never need to hand-roll lastIndexOf(".") logic or handle the dotfile edge case themselves.

Things to know:

Usage

ts
import { splitFileExtension, getFileExtension, requireFileExtension } from "shelving/util";

splitFileExtension("array.ts");       // ["array", "ts"]
splitFileExtension("archive.tar.gz"); // ["archive.tar", "gz"]
splitFileExtension("no-ext");         // ["no-ext", undefined]
splitFileExtension(".gitignore");     // [undefined, "gitignore"]
splitFileExtension(undefined);        // [undefined, undefined]

getFileExtension("index.html");       // "html"
getFileExtension("no-ext");           // undefined

requireFileExtension("style.css");    // "css"
requireFileExtension("no-ext");       // throws RequiredError

Functions

Go

splitFileExtension()function

Split a filename into its base name and extension in a single pass.

splitFileExtension(file: Nullish<string> = ""): [base: string | undefined, extension: string | undefined]
Go

getFileExtension()function

Get the file extension from a file path, e.g. "md", or return undefined if the input has no extension.

getFileExtension(file: Nullish<string>): string | undefined
Go

requireFileExtension()function

Get the file extension from a file path e.g. "tsx", or throw RequiredError if the input has no extension.

requireFileExtension(file: string, caller: AnyCaller = requireFileExtension): string

Types

Go

FileTypestype

List of file types in extension: mime format.

{
	[extension: string]: string;
}