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

dltracker-merge

v1.0.1

Published

Merge directories of packages obtained by `npm download`

Downloads

2

Readme

dltracker-merge

Combine directories of packages obtained by the npm download command

Overview

The npm download command is only available when an installation of npm has been overlaid with npm-two-stage. The official npm interface does not have a download command at this time.

In short, npm download fetches named packages, and all the packages of their dependency trees, as a means of collecting all that is needed for offline installation on another system. In the process, it creates a simple database of metadata for those packages, and stores it in a file named dltracker.json. (See the README for npm-download-tracker, a.k.a. the npm package npm-package-dl-tracker).

If one has used this command several times, retaining the results but not always reusing the same target directory, it may result in many duplicate copies of packages distributed across multiple directories.

Manually moving files from one directory to another does not solve the problem, but renders the moved packages unusable, because it does not honor the records of the package metadata stored in the corresponding JSON files.

This module provides a command to reduce package redundancy without losing anything, by merging directories of packages and the JSON files that govern them.

Warning: merging download directories can lead to a directory of thousands of packages, which can result in degraded installation performance. Whether by merging or by downloading, collecting multiple thousands of packages in one directory is discouraged. Moderation is encouraged.

To Install

Typical CLI use is from a global installation:

$ npm install -g dltracker-merge

But local installation is valid, and possibly useful for the library module:

$ npm install --save dltracker-merge

CLI Usage

Enter the dltmerge command with the paths of two or more npm download directories.

$ dltmerge PATH_1 PATH_2 [... PATH_n]
  • The last named directory will be the destination of the merger.
  • Directories can be empty.
  • The last of at least 3 paths can be non-existent, in which case it is created by dltmerge.

By default, dltmerge copies files. An option is provided to move files instead:

$ dltmerge --move PATH_1 PATH_2 [... PATH_n]

With this option, the source directories (all but the last of the given paths) are removed upon completion.

dltmerge produces minimal console output, but an option is provided to omit all but error output:

$ dltmerge --silent PATH_1 PATH_2 [... PATH_n]

Show version and exit:

$ dltmerge --version

Library Module API

merge-lib.js exposes only a function and a message emitter.

const mergeLib = require('dltracker-merge/merge-lib')

mergeLib.emitter.on('msg', (level, message) => {
  // Maybe test level, then do something with message...
})

const directories = ['path1', 'path2', 'path/to/destination'];
mergeLib.merge(directories)
.then(() => {
  const sources = directories.slice(0, -1)
  const dest = directories.slice(-1)
  console.log(`Successfully merged contents of ${sources.join(', ')} into ${dest}`)
})

mergeLib.emitter {events.EventEmitter}

A single event 'msg' is implemented. The handler is passed two arguments:

  • level {string} One of 'info'|'warn'
  • message {string} A report of the current point in the program activity

mergeLib.merge(directories[, options])Promise<empty>

  • directories {Array<string>} Paths to two or more directories. The bulleted statements in CLI Usage above apply the same here.
  • options {object} Optional A hash of option settings. Currently supported properties:
    • move {boolean} Move rather than copy files. Default false.

License: MIT