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.
npm i -D copyfiles-nowNode.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-nowRun without installing:
npx copyfiles-now 'src/**/*.css' distRun 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/**/*' distcopyup is equivalent to copyfiles --up 1.
Supported flags: --up, --flat, --exclude, --all, --soft, --error, --follow, and --verbose.
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.
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.shcargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
npm test
npm run pack:dryMIT
