mirror of
https://github.com/arthur-pbty/portfolio2023.git
synced 2026-06-09 18:39:25 +02:00
117 lines
2.4 KiB
Markdown
117 lines
2.4 KiB
Markdown
# cp-file
|
|
|
|
> Copy a file
|
|
|
|
## Highlights
|
|
|
|
- Fast by using streams in the async version and [`fs.copyFileSync()`](https://nodejs.org/api/fs.html#fs_fs_copyfilesync_src_dest_flags) in the synchronous version.
|
|
- Resilient by using [graceful-fs](https://github.com/isaacs/node-graceful-fs).
|
|
- User-friendly by creating non-existent destination directories for you.
|
|
- Can be safe by turning off [overwriting](#optionsoverwrite).
|
|
- Preserves file mode, [but not ownership](https://github.com/sindresorhus/cp-file/issues/22#issuecomment-502079547).
|
|
- User-friendly errors.
|
|
|
|
## Install
|
|
|
|
```
|
|
$ npm install cp-file
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const cpFile = require('cp-file');
|
|
|
|
(async () => {
|
|
await cpFile('source/unicorn.png', 'destination/unicorn.png');
|
|
console.log('File copied');
|
|
})();
|
|
```
|
|
|
|
## API
|
|
|
|
### cpFile(source, destination, options?)
|
|
|
|
Returns a `Promise` that resolves when the file is copied.
|
|
|
|
### cpFile.sync(source, destination, options?)
|
|
|
|
#### source
|
|
|
|
Type: `string`
|
|
|
|
The file you want to copy.
|
|
|
|
#### destination
|
|
|
|
Type: `string`
|
|
|
|
Where you want the file copied.
|
|
|
|
#### options
|
|
|
|
Type: `object`
|
|
|
|
##### overwrite
|
|
|
|
Type: `boolean`\
|
|
Default: `true`
|
|
|
|
Overwrite existing destination file.
|
|
|
|
##### directoryMode
|
|
|
|
Type: `number`\
|
|
Default: `0o777`
|
|
|
|
[Permissions](https://en.wikipedia.org/wiki/File-system_permissions#Numeric_notation) for created directories.
|
|
|
|
It has no effect on Windows.
|
|
|
|
### cpFile.on('progress', handler)
|
|
|
|
Progress reporting. Only available when using the async method.
|
|
|
|
#### handler(data)
|
|
|
|
Type: `Function`
|
|
|
|
##### data
|
|
|
|
```js
|
|
{
|
|
sourcePath: string,
|
|
destinationPath: string,
|
|
size: number,
|
|
writtenBytes: number,
|
|
percent: number
|
|
}
|
|
```
|
|
|
|
- `source` and `destination` are absolute paths.
|
|
- `size` and `writtenBytes` are in bytes.
|
|
- `percent` is a value between `0` and `1`.
|
|
|
|
###### Notes
|
|
|
|
- For empty files, the `progress` event is emitted only once.
|
|
- The `.on()` method is available only right after the initial `cpFile()` call. So make sure
|
|
you add a `handler` before `.then()`:
|
|
|
|
```js
|
|
const cpFile = require('cp-file');
|
|
|
|
(async () => {
|
|
await cpFile(source, destination).on('progress', data => {
|
|
// …
|
|
});
|
|
})();
|
|
```
|
|
|
|
## Related
|
|
|
|
- [cpy](https://github.com/sindresorhus/cpy) - Copy files
|
|
- [cpy-cli](https://github.com/sindresorhus/cpy-cli) - Copy files on the command-line
|
|
- [move-file](https://github.com/sindresorhus/move-file) - Move a file
|
|
- [make-dir](https://github.com/sindresorhus/make-dir) - Make a directory and its parents if needed
|