merge-packages
Very intelligently merge package.json
files. 2021 UP_TO_DATE VERSION OF THIS TOOL.
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 expressionpackage*(.*).json
will be used to match files exceptpackage.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 filenamepackage.merged1.json
, and the like.
-
output: The output filename. Default to
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
Recently changes
See the change log.