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

recursive-copy-cli

v1.0.20

Published

CLI for [recursive-copy](https://github.com/timkendrick/recursive-copy)

Downloads

28,899

Readme

recursive-copy-cli

License: ISC Dependabot semantic-release npm node-lts

master: GitHub Workflow Status GitHub Workflow Status Codecov

develop: GitHub Workflow Status GitHub Workflow Status Codecov

CLI for recursive-copy

Installing the command line tool

Installation is as simple as running the following command

npm install -g recursive-copy-cli

Using the command line tool

recursive-copy <src> <dest>

Positionals:
  src   Source file/folder path                                                                                  [string]
  dest  Destination file/folder path                                                                             [string]

Options:
  --help                  Show help                                                                             [boolean]
  --version               Show version number                                                                   [boolean]
  --overwrite, -w         Whether to overwrite destination files [Default: false]                               [boolean]
  --expand, -e            Whether to expand symbolic links [Default: false]                                     [boolean]
  --dot, -d               Whether to copy files beginning with a .(dot) [Default: false]                        [boolean]
  --junk, -j              Whether to copy OS junk files (e.g. .DS_Store, Thumbs.db) [Default: false]            [boolean]
  --filter, -f            Filter regular expression / glob that determines which files to copy (uses maximatch)   [array]
  --transform-module, -t  Function that returns a transform stream used to modify file contents                   [array]
  --concurrency, -c       Maximum number of simultaneous copy operations [Default: 255]                          [number]
  --debug, -v             Whether to log debug information [Default: false]                                     [boolean]
  --renameModule, -r     renames source paths using the module                                                   [array]
  --renamePattern, -p    renames patterns in source paths. eg: :: -                                              [array]

Examples:
  recursive-copy srcPath destPath -r pascalcase                       Renames files using the pascalcase module
  recursive-copy srcPath destPath -p '::' '-'                         Renames someFile::name.ext to someFile-name.ext
  recursive-copy srcPath destPath -p '/(.*)-(.*)\.(.*)/g' '$2-$1.$3'  Renames author-title.ext to title-author.ext
  recursive-copy srcPath destPath -f '*.json' '/\*.js$/'              Only Copies json & js files
  recursive-copy srcPath destPath -f "*.js" -t some-transform-module  modify the contents of js files

Use --no-<option> to toggle boolean options. eg: --no-overwrite or --no-w

When specifying a module, you could specify a global module, local module or provide the path to file.
eg: ./someFolder/pascalcase/index.js in case of file or node_modules/pascalcase in case of local module

For more help refer https://github.com/libinvarghese/recursive-copy-cli

Example

$ recursive-copy source dest
source -> dest
source/a -> dest/a
source/b -> dest/b
source/c -> dest/c
4 item(s) copied

FAQ

  • What is a transform module?

    renameModule a function that renames the file name.

    Refer examples/toupper.rename.module.mock.js

    'use strict';
    /**
    * @param src string  Name of the file to rename
    *
    * @return renamed string
    */
    module.exports = function toUpperCase(src) {
      return src.toUpperCase();
    };
    $ recursive-copy source dest -r examples/toupper.rename.module.mock.js
    source -> dest
    source/a -> dest/A
    source/b -> dest/B
    source/c -> dest/C
    4 item(s) copied

    Refer recursive-copy for more info regarding rename function

  • What is a transform module?

    transform-module a function that transforms the content of the file

    Refer examples/toupper.transform.module.mock.js

    'use strict';
    const through2 = require('through2');
    
    /**
    * @param src string  Name of the source file
    * @param dest string Name of the dest file
    * @param stats fs.Stats stats of the src file
    *
    * @return TransformStream
    */
    module.exports = function caseTransform(src, _dest, _stats) {
      return through2(function (chunk, _encoding, callback) {
        this.push(chunk.toString().toUpperCase());
        callback();
      });
    };
    $ echo "Hello World" > testfile.txt
    $ recursive-copy testfile.txt transformedfile.txt -t examples/toupper.transform.module.mock.js
    testfile.txt -> transformedfile.txt
    1 item(s) copied
    $ cat transformedfile.txt
    HELLO WORLD

    Refer recursive-copy for more info regarding transform function.

  • Can I provide multiple modules?

    Yes, you can pipe the result of one module into another.

    recursive-copy srcPath destPath -r pascalcase ./path/to/a/renameModule.js
    recursive-copy srcPath destPath -t ./path/to/add-header-module.js ./path/to/change-eol-module.js