https://github.com/center-key/copy-file-util
📄 Copy or rename a file (CLI for package.json scripts)
https://github.com/center-key/copy-file-util
cli copy cp file rename scripts
Last synced: about 1 month ago
JSON representation
📄 Copy or rename a file (CLI for package.json scripts)
- Host: GitHub
- URL: https://github.com/center-key/copy-file-util
- Owner: center-key
- License: mit
- Created: 2022-09-21T22:51:19.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-07-13T06:53:54.000Z (3 months ago)
- Last Synced: 2025-08-21T12:59:36.277Z (about 2 months ago)
- Topics: cli, copy, cp, file, rename, scripts
- Language: TypeScript
- Homepage:
- Size: 303 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# copy-file-util
_Copy or rename a file with optional package version number (CLI tool designed for use in npm package.json scripts)_
[](https://github.com/center-key/copy-file-util/blob/main/LICENSE.txt)
[](https://www.npmjs.com/package/copy-file-util)
[](https://github.com/center-key/copy-file-util/actions/workflows/run-spec-on-push.yaml)**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.
## A) Setup
Install package for node:
```shell
$ 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:
```json
"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:
```shell
$ 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 |
| `--no-overwrite` | Abort if target file already exists. | N/A |
| `--note` | Place to add a comment only for humans. | **string** |
| `--platform-eol` | Save target file with OS dependent line endings. | N/A |
| `--quiet` | Suppress informational messages. | 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 node_modules/ui-xlib/colors.less --folder src/css --platform-eol`
Copies `colors.less` into your project and converts the file's EOL characters to `\n` for LF
on Unix and `\r\n` for CRLF on Windows.- `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:
``` typescript
import { copyFile } from 'copy-file-util';const result = copyFile.cp('src/web/api.html' { targetFile: 'docs/api-manual.html' });
console.info('Execution time:', result.duration, 'ms');
```See the **TypeScript Declarations** at the top of [copy-file.ts](src/copy-file.ts) for documentation.
---
**CLI Build Tools for package.json**
- 🎋 [add-dist-header](https://github.com/center-key/add-dist-header): _Prepend a one-line banner comment (with license notice) to distribution files_
- 📄 [copy-file-util](https://github.com/center-key/copy-file-util): _Copy or rename a file with optional package version number_
- 📂 [copy-folder-util](https://github.com/center-key/copy-folder-util): _Recursively copy files from one folder to another folder_
- 🪺 [recursive-exec](https://github.com/center-key/recursive-exec): _Run a command on each file in a folder and its subfolders_
- 🔍 [replacer-util](https://github.com/center-key/replacer-util): _Find and replace strings or template outputs in text files_
- 🔢 [rev-web-assets](https://github.com/center-key/rev-web-assets): _Revision web asset filenames with cache busting content hash fingerprints_
- 🚆 [run-scripts-util](https://github.com/center-key/run-scripts-util): _Organize npm package.json scripts into groups of easy to manage commands_
- 🚦 [w3c-html-validator](https://github.com/center-key/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](https://github.com/center-key/copy-file-util/issues)[MIT License](LICENSE.txt)