UNPKG

replace-in-file

Version:

A simple utility to quickly replace text in one or more files.

80 lines (61 loc) 1.7 kB
import {glob} from 'glob' import nodepath from 'node:path' /** * Async wrapper for glob */ export function globAsync(pattern, ignore, allowEmptyPaths, cfg) { //Prepare glob config cfg = Object.assign({ignore}, cfg, {nodir: true}) //Run glob return glob(pattern, cfg).then(files => { //Error if no files match, unless allowed if (!allowEmptyPaths && files.length === 0) { throw new Error('No files match the pattern: ' + pattern) } //Return files return files }) } /** * Get paths (sync) */ export function pathsSync(patterns, config) { //Extract relevant config const {ignore, disableGlobs, glob: globConfig, cwd} = config //Not using globs? if (disableGlobs) { return patterns } //Prepare glob config const cfg = Object.assign({ignore}, globConfig, {nodir: true}) //Append CWD configuration if given (#56) if (cwd) { cfg.cwd = cwd } //Get paths const paths = patterns.map(pattern => glob.sync(pattern, cfg)) const flattened = [].concat.apply([], paths) //Prefix each path with CWD if given (#56) if (cwd) { return flattened.map(path => nodepath.join(cwd, path)) } //Return flattened return flattened } /** * Get paths asynchrously */ export async function pathsAsync(patterns, config) { //Extract relevant config const {ignore, disableGlobs, allowEmptyPaths, glob: cfg} = config //Not using globs? if (disableGlobs) { return patterns } //Prepare promises const promises = patterns .map(pattern => globAsync(pattern, ignore, allowEmptyPaths, cfg)) //Expand globs and flatten paths const paths = await Promise.all(promises) return [].concat.apply([], paths) }