2.2.22 • Published 3 years ago

sync-directory2 v2.2.22

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

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

    namedescriptiontypevaluesdefault
    srcDirsrc directoryStringabsolute path-
    targetDirtarget directoryStringabsolute path-
    config.watchwatch files changeBoolean-false
    config.typeway to sync filesString'copy' / 'hardlink''hardlink'
    config.deleteOrphanedDecide if you want to delete other files in targetDir when srcDir files are removedBoolean-true
    config.afterSynccallback function when files syncedFunction-blank function
    config.supportSymlinkensure symlink in target if src has symlinksBoolean-false
    config.excludefiles that should not sync to target directory.RegExp / String / Array (item is RegExp / String)-null
    config.forceSyncsome files must be synced even though 'excluded'Function-(file) => { return false }
    config.filtercallback function to filter synced files. Sync file when returning trueFunction-filepath => true
    config.onErrorcallback function when something wrongFunction-(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,
    });