merge-packages

Very intelligently merge `package.json` files. 2021 UP_TO_DATE VERSION OF THIS TOOL.


Keywords
package.json, merge package, merge-package, package-merge, package merge, merge json
License
MIT
Install
npm install merge-packages@0.1.6

Documentation

merge-packages

Very intelligently merge package.json files. 2021 UP_TO_DATE VERSION OF THIS TOOL.

NPM

npm package npm download github license Dependency Status devDependency Status github language top github stars

Features

  • merge dependencies/devDependencies/peerDependencies with semver rules respected
  • merge bin field intelligently
  • combine description field's value
  • retain some fields of the first package.json
  • sort the merged package.json fields
  • provide cli tools

Start

Install

npm install --save merge-packages

# or with yarn
yarn add merge-packages

Usage

CLI

merge-packages [options] [pkgs...]
  • pkgs Argument pkgs is the files or directories to merge. When passing a directory, a minimatch expression package*(.*).json will be used to match files except package.merged.json. If no arguments passed, the result will be like passing a directory ./;

  • options

    • output: The output filename. Default to package.merged.json. If already exists, will use filename package.merged1.json, and the like.
Install globally
npm install --global merge-packages

merge-packages -h

merge-packages package.a.json package.b.json packagesSubDir
NPX
npx merge-packages -h

Node

  • Merge two package.json files
import fs from 'fs';
import mergePackages from 'merge-package';

const pkgStr1 = fs.readFileSync('./a/package.json', 'utf8');
const pkgStr2 = fs.readFileSync('./b/package.json', 'utf8');

// only support string. buffer is not supported
const mergedPkgStr = mergePackages(pkgStr1, pkgStr2);
fs.writeFileSync('./package.json', mergedPkgStr);
  • Merge two package.json objects
import { mergeJson } from 'merge-package';

const pkg1 = {
    name: 'my-package',
    bin: {
        'my-test': 'bin/my-test.js'
    },
    dependencies: {
        'merge-packages': '0.1.0',
        '@babel/core': '^7.13.10'
    }
};

const pkg2 = {
    name: 'my-cli',
    bin: 'bin/cli.js',
    devDependencies: {
        'rimraf': '^3.0.2'
    },
    dependencies: {
        '@babel/core': '^7.13.0'
    }
};

const mergedPkg = mergeJson(pkg1, pkg2);
console.log(mergedPkg);

Contributing

How to contribute to this?

Recently changes

See the change log.

License

MIT