0.1.6 • Published 4 years ago
merge-packages v0.1.6
merge-packages
Very intelligently merge package.json files. 2021 UP_TO_DATE VERSION OF THIS TOOL.
Features
- merge
dependencies/devDependencies/peerDependencieswith semver rules respected - merge
binfield intelligently - combine
descriptionfield's value - retain some fields of the first
package.json - sort the merged
package.jsonfields - provide cli tools
Start
Install
npm install --save merge-packages
# or with yarn
yarn add merge-packagesUsage
CLI
merge-packages options
pkgs Argument
pkgsis the files or directories to merge. When passing a directory, a minimatch expressionpackage*(.*).jsonwill 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 packagesSubDirNPX
npx merge-packages -hNode
- Merge two
package.jsonfiles
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.jsonobjects
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.
