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

sync-directory2

v2.2.22

Published

sync two directories by copying or creating hardlink

Downloads

6

Readme

Description

sync-directory can sync files from src directory to target directory.

We have two ways to sync files: hardlink and copy.

If type is copy, sync-directory will copy files from src directory to target directory.

If type is hardlink, sync-directory can create hardlink files in target directory from src directory.

Apparently, the type hardlink is quicker than type copy, and sync-directory uses hardlink by default.

Cli

npm i sync-directory -g
syncdir <from> <to> [options]

Example: syncdir aaa bbb -w

options:

  • -w, --watch

    Watch changes. false as default.

    Same as api watch.

  • --quiet

    Disable unnecessary logs.

  • -do, --deleteOrphaned

    Delete orphaned files/folders in target folder. false as default.

    Same as api deleteOrphaned.

  • -c, --copy

    Sync with type copy, hardlink as default.

    Same as api type: 'copy'.

  • -symlink, --symlink

    support symlink while sync running. false as default.

    Same as api supportSymlink.

API

require('sync-directory')(srcDir, targetDir[, config]);
  • parames

    name | description | type | values | default ---- | ---- | ---- | ---- | ---- srcDir | src directory | String | absolute path | - targetDir | target directory | String | absolute path | - config.watch | watch files change | Boolean | - | false config.type | way to sync files | String | 'copy' / 'hardlink' | 'hardlink' config.deleteOrphaned | Decide if you want to delete other files in targetDir when srcDir files are removed | Boolean | - | true config.afterSync | callback function when files synced | Function | - | blank function config.supportSymlink | ensure symlink in target if src has symlinks | Boolean | - | false config.exclude | files that should not sync to target directory. | RegExp / String / Array (item is RegExp / String) | - | null config.forceSync | some files must be synced even though 'excluded' | Function | - | (file) => { return false } config.filter | callback function to filter synced files. Sync file when returning true | Function | - | filepath => true config.onError | callback function when something wrong | Function | - | (err) => { throw new Error(err) }

  • return

    const watcher = require('sync-directory')(A, B);

    watcher is undefined.

    const watcher = require('sync-directory')(A, B, {
        watch: true
    });

    watcher is a chokidar watcher.

Params & Examples

  • watch

    require('sync-directory')(srcDir, targetDir, {
        watch: true
    });
  • afterSync

    require('sync-directory')(srcDir, targetDir, {
        afterSync({ type, relativePath }) {
            // type: add / change / unlink / unlinkDir
            // relativePath: relative file path
        }
    });
  • type

    copy

    require('sync-directory')(srcDir, targetDir, {
        type: 'copy'
    });

    hardlink (default)

    require('sync-directory')(srcDir, targetDir);
  • exclude

    exclude node_modules

    • String

      require('sync-directory')(srcDir, targetDir, {
          exclude: 'node_modules'
      });
    • RegExp

      require('sync-directory')(srcDir, targetDir, {
          exclude: /node\_modules/
      });
    • Array

      require('sync-directory')(srcDir, targetDir, {
          exclude: [/node\_modules/]
      });
      require('sync-directory')(srcDir, targetDir, {
          exclude: ['node_modules']
      });
  • forceSync

    require('sync-directory')(srcDir, targetDir, {
        exclude: 'node_modules',
        forceSync(file) {
            // all files in "node_modules" will be synced event though "exclude" is configed
            return /node_modules/.test(file);
        }
    });
  • supportSymlink

    // srcFolder:
    //     a/     a is symlink
    //      1.js
    
    // targetFolder:
    //     a/     a is not symlink
    //      1.js
    require('sync-directory')(srcDir, targetDir, {
        supportSymlink: false,
    });
    // srcFolder:
    //     a/     a is symlink
    //      1.js
    
    // targetFolder:
    //     a/     a is the same symlink
    //      1.js
    require('sync-directory')(srcDir, targetDir, {
        supportSymlink: true,
    });