3.8.3 ā€¢ Published 1 year ago

clonefile v3.8.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Test workflow nycrc Coverage npm version

Installation

npm install clonefile [-g]

Usage

In a Terminal

$> clonefile <source> <target> [options] 
$> clonefile [--source] <source> [--target] <target1> <target2>...<targetN>  [options] 
$> clonefile --sources <pattern> <target1> <target2>...<targetN>  [options] 

Programmatically

via CJS

const {cloneFile} = require("clonefile");

// "Source" and "target" can be strings or arrays of strings
cloneFile(source, target, {silent: true, force: true})

or via ESM

import {cloneFile} from "clonefile";

cloneFile(source, target, {silent: true, force: true})

Examples

Display file list in a directory without doing any copies

$> clonefile my-dir/ --list-only

šŸ’» ā†“

[
   "./docs/images/img_1.png",
   "./docs/images/img_2.png",
   "./docs/images/img_3.png",
   "./docs/images/img_4.png",
   ...
]

Clone a file

$> clonefile license.txt license.md  

or

$> clonefile --source license.txt --target license.md  

NOTE: The source and the target arguments can be omitted


Clone a file into directory

# Copy license.txt into my-dest-dir
$> clonefile license.txt my-dest-dir/  

Clone a file to multiple locations

# Copy license.txt into my-file-target-1 (file), my-file-target-2 (file) and within (my-dest-dir-1/) (directory)
$> clonefile license.txt my-file-target-1 my-file-target-2 my-dest-dir-1/   

Clone a directory in multiple directories

$> clonefile --force sourcedir/ my-dest-dir-1/ my-dest-dir-2/ my-dest-dir-3/  

Clone multiple files from a glob pattern to multiple directories with the --sources options (mandatory)

$> clonefile --force --sources *.txt my-dest-dir-1/ my-dest-dir-2/ my-dest-dir-3/  

Result

C:/projects/clonefile/somefile1.txt => C:/projects/clonefile/my-dir-1/somefile1.txt C:/projects/clonefile/somefile1.txt => C:/projects/clonefile/my-dir-2/somefile1.txt

C:/projects/clonefile/somefile1.txt => C:/projects/clonefile/my-dir-3/somefile1.txt

3 items cloned

C:/projects/clonefile/somefile2.txt => C:/projects/clonefile/my-dir-1/somefile2.txt C:/projects/clonefile/somefile2.txt => C:/projects/clonefile/my-dir-2/somefile2.txt

C:/projects/clonefile/somefile2.txt => C:/projects/clonefile/my-dir-3/somefile2.txt

3 items cloned

C:/projects/clonefile/somefile3.txt => C:/projects/clonefile/my-dir-1/somefile3.txt C:/projects/clonefile/somefile3.txt => C:/projects/clonefile/my-dir-2/somefile3.txt

C:/projects/clonefile/somefile3.txt => C:/projects/clonefile/my-dir-3/somefile3.txt

3 items cloned


Notes

NOTE: The --force option is required for cloning a directory


To help clonefile knows whether you want to copy a file to a directory or another file, always add a trailing slash "/" to folders.


Clone files using multiple glob patterns to multiple directories

$> clonefile --force --sources *.txt --sources ./sowehere/ --sources ../another-location/*.png my-dest-dir-1/ my-dest-dir-2/ my-dest-dir-3/  

Clone multiple files and folders from multiple locations and files and folders from multiple glob patterns to multiple directories

$> clonefile --force --source my-file-1 --source path1/my-file-2 --source path1/my-dir/ --sources *.txt --sources /another-location/*.png my-dest-dir-1/ my-dest-dir-2/ my-dest-dir-3/  
"my-file-1" and "path1/my-file-2" are regular files and will be copied to "my-dest-dir-1/", "my-dest-dir-2/", "my-dest-dir-3/"

"path1/my-dir/" is a directory that will be copied to "my-dest-dir-1/", "my-dest-dir-2/", "my-dest-dir-3/"

"*.txt" will copy all .txt in the current directory to "my-dest-dir-1/", "my-dest-dir-2/", "my-dest-dir-3/"

"/another-location/*.png" my-dest-dir-1/ will copy all .png in /another-location to "my-dest-dir-1/", "my-dest-dir-2/", "my-dest-dir-3/"


Options

OptionsdefaultExpectDescription
--silentfalsebooleanWhether to display messages
--sources""stringGlob Pattern to determine files to copy
--source""stringRegular file path for files or directories to copy
--target""stringDestination files or folders
--recursivefalsebooleancreate target directories if nonexistent
--forcefalsebooleanAllow cloning directories & Overwrite destination
--progressfalsebooleanDisplay a progress bar during copy
--clearProgressfalsebooleanRemove the progress bar when task complete
--listfalsebooleanPrint out the file list to copy
--list-onlyfalsebooleanOnly display the file list to copy in an array formatted for Js. No copy will be done
--dryfalsebooleanPrint out all operations, but without making any copies
--no-limitfalsebooleanIgnore the limit set on copies (10000 by default).
--hide-overwrite-errorfalsebooleanDon't display error messages on overwrite.

--progress

--progress option example


Package

šŸ“ package                
ā”‚
ā”‚ā”€ šŸ“ index.cjs (2.1Kb)  
ā”‚ā”€ šŸ“ index.mjs (2.3Kb)  
ā”‚
ā””ā”€ā”€ā”€šŸ“ src
ā”‚   ā”‚
ā”‚   ā”‚ā”€ šŸ“ clonefile.cjs            ā‡½ CJS version      - Node (25.1k unminified)
ā”‚   ā”‚ā”€ šŸ“ clonefile.esm            ā‡½ ESM version      - Node (25.7k unminified)

Changelog

current:
  • Fix --recursive option ignored when invoked programmatically
3.8.2:
  • Restore the --recursive option
3.8.0:
  • Add the option --hide-overwrite-error
3.7.2:
  • Allow copying with clonefile and clone functions
3.7.0:
  • Follow symlinks
3.6.0:
  • Generate code for ESM with to-esm
  • Fix help command not working
3.5.0:
  • Replace the --force option with --no-limit to allow unlimited copies
  • Increase the default limit for copying at once to 10000 (Use --no-limit to remove limitation)
  • Copy with no limit when cloning programmatically and add a --no-limit option (cli) to enforce unlimited copies
  • Add --list, --list-only and --dry options
3.4.0:
  • Add the option --clearProgress
3.3.0:
  • Add a --progress option to display a progress bar while copying
3.2.6:
  • Copy symlinks
3.2.5:
  • Fix --force option not working with cloneGlobs
3.2.4:
  • Review file limits processing (5000 instead of 200) (To increase or reduce that limit, create an environment variable called CLONE_FILE_MAX_PATTERN and pass the new limit)
3.2.3:
  • Increase limit files to copy from 200 to 5000
  • Fix js error in cloneGlobs
3.2.1:
  • Use clone and cloneGlobs for programmatic copies
3.2.0:
  • Import the clone function to copy from code
3.1.0:
  • Add various fixes
  • Deprecate the --recursive option with --force
  • Allow selecting multiple sources with the --source option
2.1.1:
  • Do not stop at the first error
1.1.3:
  • Make --force option automatically be --recursive and --overwrite
1.1.0:
  • Allow cloning a directory
  • Replace the --verbose option with --silent
  • Fix cloning when options misplaced

3.8.3

1 year ago

3.8.2

1 year ago

3.8.1

1 year ago

3.7.2

1 year ago

3.8.0

1 year ago

3.7.1

1 year ago

3.7.0

1 year ago

3.6.0

1 year ago

3.4.0

1 year ago

3.2.2

2 years ago

3.3.0

1 year ago

3.2.6

1 year ago

3.2.5

2 years ago

3.2.4

2 years ago

3.2.3

2 years ago

3.2.1

2 years ago

3.0.3

2 years ago

3.2.0

2 years ago

3.0.2

2 years ago

3.1.0

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.1.1

2 years ago

2.1.0

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago