cross-process-lock
    Preparing search index...

    cross-process-lock

    cross-process-lock

    Downloads Version@npm Version@git CI Docs

    Cross-process file locking solution with lock-queue

    const { lock } = require('cross-process-lock');
    const { writeFileSync } = require('fs');
    // create a lock for the given file
    const unlock = await lock('file.txt')
    // do smth with the file here
    writeFileSync('file.txt', 'some content', 'utf8');
    // unlock file with the received function
    return unlock();

    lock(file[, options]) - creates a lock for the given file for the actual process

    Arguments:

    • {string} file - the path of the file needs to be locked
    • {lockOptions} options - the options to use to lock file, e.g timeouts

    Returns: Promise<Function> - resolved with unlock function in case of successful lock; rejected in case of file couldn't be lock in the given timeout

    unlock(file) - deletes the lock for the given file for the actual process

    Arguments:

    • {string} file - the path of the file needs to be unlocked

    Returns: Promise - resolved in case of successful unlock or rejected in case of any error

    withLock(file[, options], callback) - executes the callback with locking before and unlocking after the execution

    Arguments:

    • {string} file - path of the file needs to be locked
    • {lockOptions} options - the options to use to lock file, e.g timeouts
    • {() => Promise<T>} callback - the function to be executed

    Returns: Promise<T> - resolved/rejected with the result of the callback

    Option Description Default
    lockTimeout {number} timeout (ms) when locks automatically released 20 minutes
    waitTimeout {number} timeout (ms) until lock waits to lock a file 10 seconds

    The package uses the debug NPM package with cross-process-lock:PID name, where PID is the process ID of the current process.

    To enable debug logging, use for example the DEBUG=cross-process-lock:* environment variable, but for more information, check the documentation of the debug package.