UNPKG

recursive-exec

Version:

Run a command on each file in a folder and its subfolders (CLI tool designed for use in npm package.json scripts)

48 lines (42 loc) 1.56 kB
#!/usr/bin/env node //////////////////// // recursive-exec // // MIT License // //////////////////// // Usage in package.json: // "scripts": { // "make-css": "recursive-exec src/web --ext=.less 'lessc {{file}} build/web/{{basename}}.css'", // "minimize-css": "recursive-exec build/web --ext=.css 'csso {{file}} --output dist/{{filename}}'", // "minimize-js": "recursive-exec build --ext=.js 'uglifyjs {{file}} --output dist/{{basename}}.min.js'" // }, // // Contributors to this project: // $ cd recursive-exec // $ npm install // $ npm test // $ node bin/cli.js spec/fixtures/source --ext=.js,.css 'npx glob {{file}}' // Imports import { cliArgvUtil } from 'cli-argv-util'; // Modules import { recursiveExec } from '../dist/recursive-exec.js'; // Parameters and flags const validFlags = ['echo', 'exclude', 'ext', 'note', 'quiet']; const cli = cliArgvUtil.parse(validFlags); const folder = cli.params[0]; const command = cli.params[1]; // Recursive Exec const error = cli.invalidFlag ? cli.invalidFlagMsg : !folder ? 'Missing source folder.' : !command ? 'Missing command to execute.' : cli.paramCount > 2 ? 'Extraneous parameter: ' + cli.params[2] : null; if (error) throw new Error('[recursive-exec] ' + error); const options = { echo: cli.flagOn.echo, excludes: cli.flagMap.exclude?.split(',') ?? null, quiet: cli.flagOn.quiet, extensions: cli.flagMap.ext?.split(',') ?? null, }; recursiveExec.find(folder, command, options);