npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

rcpy

v1.0.2

Published

Lightweight, fast, simple and flexible file copy utility for Node.js

Downloads

26

Readme

rcpy

recursive copy

Copy a file or directory. The directory can have contents.

rcpy serves as a drop-in replacement of ncp and fs-extra's copy function (rcpy passes most of fs-extra's test cases). It can also be used as a polyfill for Node.js fs.cp API.

Installation

# npm
npm i rcpy
# yarn
yarn add rcpy
# pnpm
pnpm i rcpy

Usage

// CommonJS
const { rcpy } = require('rcpy');
// or
const { copy } = require('rcpy'); // "copy" is an alias of "rcpy"

// ES Module
import { rcpy } from 'rcpy';
// or
import { copy } from 'rcpy'; // "copy" is an alias of "rcpy"

(async () => {
  await copy(src, dest, options);
})();
  • src: string The path of the file/directory to copy. Note that if src is a directory it will copy everything inside of this directory, not the entire directory itself.
  • dest: string The destination of the copied file/directory. Note that currently if src is a file, dest cannot be a directory. This behavior might be changed in the future.
  • option: RcpyOption optional.
    • dereference: boolean optional. Whether to dereference symbolic links, default to false.
    • force: boolean optional. Whether to overwrite existing file/directory, default to true. Note that the copy operation will silently fail if you set this to false and the destination exists. Use the errorOnExist option to change this behavior.
    • overwrite: boolean optional. Deprecated, now is the alias of force. Serves as a compatibility option for fs-extra.
    • errorOnExist: boolean optional. Whether to throw an error if dest already exists, default to false.
    • filter: (src: string, dest: string) => boolean | Promise<boolean> optional. Filter copied files/directories, return true to copy, false to skip. When a directory is skipped, all of its contents will be skipped as well.
    • mode: number optional. Modifiers for copy operation, default to 0. See mode flag of fs.copyFile()
    • preserveTimestamps: boolean optional. Whether to preserve file timestamps, default to false, where the behavior is OS-dependent.
    • concurrency: number optional. The number of concurrent copy operations, default to 32.

Differences between rcpy and fs-extra

  • Doesn't use graceful-fs to prevent EMFILE error.
    • rcpy instead provides a concurrency option to limit the number of concurrent copy operations.
  • Asynchronous and Promise-based API only. No synchronous API, no Node.js callback style API.
    • Use require('util').callbackify to convert rcpy to Node.js callback style API.P

Differences between rcpy and Node.js fs.cp()

  • Doesn't support URL for src and dest.
    • PR is welcome to add file:// support.
  • Doesn't support recursive option.
    • rcpy will always copy directories' content recursively.
    • PR is welcome to add this option.
  • Doesn't support verbatimSymlinks option.
    • rcpy will always perform path resolution for symlinks if dereference option is enabled.
    • PR is welcome to add this option.
  • Extra concurrency option.
    • rcpy will use this option to limit the number of concurrent copy operations to prevent EMFILE error.

License

MIT


rcpy © Sukka, Released under the MIT License. Authored and maintained by Sukka with help from contributors (list).

Personal Website · Blog · GitHub @SukkaW · Telegram Channel @SukkaChannel · Mastodon @[email protected] · Twitter @isukkaw · Keybase @sukka