Skip to content

๐Ÿ“„ Copy or rename a file (CLI for package.json scripts)

License

Notifications You must be signed in to change notification settings

center-key/copy-file-util

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

58 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

copy-file-util

logo

Copy or rename a file with optional package version number (CLI tool designed for use in npm package.json scripts)

License:MIT npm Build

copy-file-util takes a source file and copies it to a new destination.ย  The command's console output includes a timestamp and formatting helpful in build systems.

screenshot

A) Setup

Install package for node:

$ npm install --save-dev copy-file-util

B) Usage

1. npm package.json scripts

Run copy-file from the "scripts" section of your package.json file.

Parameters:

  • The first parameter is the source file.
  • The second parameter is the target file or folder (use the --folder flag).

Example package.json scripts:

   "scripts": {
      "pub-license": "copy-file src/LICENSE doc/license.txt",
      "backup-license": "copy-file src/LICENSE --folder backup",
   },

2. Command-line npx

Example terminal commands:

$ npm install --save-dev copy-file-util
$ copy-file src/web/api.html docs/api-manual.html

You can also install copy-file-util globally (--global) and then run it anywhere directly from the terminal.

3. CLI flags

Command-line flags:

Flag Description Values
--cd Change working directory before starting copy. string
--folder Indicates the target is a folder. N/A
--move Delete the source file after copying it. N/A
--note Place to add a comment only for humans. string
--quiet Suppress informational messages. N/A
--no-overwrite Abort if target file already exists. N/A

Examples:

  • copy-file app.js app.mjs --quiet
    Displays no output.

  • copy-file app.js --folder dist
    Copies app.js into the dist folder.

  • copy-file 'src/Legal Notice.md' --folder dist
    Copies a file that has a space in its filename.

  • copy-file app.js --move --folder dist
    Like the mv Unix command.

  • copy-file default-config.json settings/config.json --no-overwrite
    Performs a safe copy that aborts if the settings/config.json file already exists.

Note: Single quotes in commands are normalized so they work cross-platform and avoid the errors often encountered on Microsoft Windows.

4. Template variables

The target parameter can contain template variables, like {{package.version}} and {{package.name}}, which will be replaced with values with values from your project's package.json file.

Example:

  • copy-file build/app.js dist/app-v{{package.version}}.js
    Creates a copy of app.js named something like app-v1.2.3.js based on the version of your project.

C) Application Code

Even though copy-file-util is primarily intended for build scripts, the package can be used programmatically in ESM and TypeScript projects.

Example:

import { copyFile } from 'copy-file-util';

const result = copyFile.cp('src/web/api.html' { targetFile: 'docs/api-manual.html' });
console.log('Execution time:', result.duration, 'ms');

See the TypeScript Declarations at the top of copy-file.ts for documentation.



CLI Build Tools for package.json

  • ๐ŸŽ‹ add-dist-header:ย  Prepend a one-line banner comment (with license notice) to distribution files
  • ๐Ÿ“„ copy-file-util:ย  Copy or rename a file with optional package version number
  • ๐Ÿ“‚ copy-folder-util:ย  Recursively copy files from one folder to another folder
  • ๐Ÿชบ recursive-exec:ย  Run a command on each file in a folder and its subfolders
  • ๐Ÿ” replacer-util:ย  Find and replace strings or template outputs in text files
  • ๐Ÿ”ข rev-web-assets:ย  Revision web asset filenames with cache busting content hash fingerprints
  • ๐Ÿš† run-scripts-util:ย  Organize npm package.json scripts into groups of easy to manage commands
  • ๐Ÿšฆ w3c-html-validator:ย  Check the markup validity of HTML files using the W3C validator

Feel free to submit questions at:
github.com/center-key/copy-file-util/issues

MIT License