Skip to content

ocodista/copyfiles-now

Repository files navigation

copyfiles-now logo

copyfiles-now

A fast zero runtime-dependency tool for copying files using glob patterns into destination directory.

It's API compatible with copyfiles but it uses 43.8x less memory, has 0 dependencies and it's 1.24x faster copying 5,000 files.

Install

npm i -D copyfiles-now

Node.js 18+ is required. The package does not run install scripts. The launcher selects the native binary at runtime and fails loudly if it is missing.

Replace the package, not your scripts:

- npm i -D copyfiles
+ npm i -D copyfiles-now

CLI

Run without installing:

npx copyfiles-now 'src/**/*.css' dist

Run from your project scripts:

copyfiles 'src/**/*.css' dist
copyfiles -u 1 'src/assets/**/*' dist
copyfiles --flat 'src/**/*.css' 'vendor/**/*.css' dist
copyfiles -e '**/*.tmp.css' 'src/**/*.css' dist
copyfiles --all 'src/**/*.txt' dist
copyfiles --soft 'src/**/*.txt' dist
copyup 'public/**/*' dist

copyup is equivalent to copyfiles --up 1.

Supported flags: --up, --flat, --exclude, --all, --soft, --error, --follow, and --verbose.

Node API

const copyfiles = require('copyfiles-now')

copyfiles(['src/**/*.css', 'dist'], err => {
  if (err) throw err
})

copyfiles(['src/**/*.css', 'dist'], 1, err => {
  if (err) throw err
})

copyfiles(['src/**/*.css', 'dist'], {
  up: 1,
  exclude: ['**/*.tmp.css'],
  all: true,
  soft: true
}, err => {
  if (err) throw err
})

The callback is required, matching copyfiles.

Benchmarks

Local darwin-arm64 snapshot. Copy runtime uses bench/stress.sh with 5,000 .txt files. Lower is better.

Metric copyfiles copyfiles-now Improvement
Direct runtime deps 7 0 7 fewer
Startup time 40.4 ms ± 0.7 1.3 ms ± 0.1 31.07x faster
Copy 5,000 files 900.3 ms ± 22.4 726.1 ms ± 16.3 1.24x faster
Startup RSS 57.5 MB 1.9 MB 30.0x less memory
Copy RSS, 5,000 files 166.5 MB 3.8 MB 43.8x less memory

Run locally:

npm run build:native
bash bench/startup.sh
bash bench/memory.sh
bash bench/stress.sh

Development

cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
npm test
npm run pack:dry

License

MIT

About

Ultra-fast native replacement for copyfiles

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors