Package Exports
- sync-monorepo-packages
- sync-monorepo-packages/src/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sync-monorepo-packages) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
sync-monorepo-packages
Synchronizes
package.jsonfields and arbitrary files in a monorepo
Features
- Auto-discovery of packages via
package.jsonworkspaces and/orlerna.json - Optional manual control of destination packages
- Helpful defaults
- Detailed "dry run" mode
- Summary of operations
- Sync arbitrary files (e.g.
README.md)
Install
Requires Node.js ^14.17.0 || ^16.13.0 || >=18.0.0
npm install sync-monorepo-packages --save-devor
$ npx sync-monorepo-packages --helpUsage
Here, I have pasted the output of --help because I am lazy:
sync-monorepo-packages [file..]
Synchronize files and metadata across packages in a monorepo
Positionals:
file One or more source files to sync [string]
Options:
--help Show help [boolean]
--version Show version number [boolean]
-D, --dry-run Do not sync; print what would have changed (implies
--verbose) [boolean]
-f, --field, --fields Fields in source package.json to sync [array] [default:
["keywords","author","repository","license","engines","publishConfig"]]
--force Overwrite destination file(s) [boolean]
-p, --packages Dirs/globs containing destination packages
[array] [default: (use workspaces and/or lerna.json)]
--package-json Sync package.json [boolean] [default: true]
-s, --source Path to source package.json
[string] [default: (closest package.json)]
-v, --verbose Print change details [boolean]
--summary Print summary [boolean] [default: true]
-l, --lerna Path to lerna.json, if any
[string] [default: (lerna.json in current dir)]
Examples:
sync-monorepo-packages --field keywords Sync "keywords" and "author" from
--field author -s ./foo/package.json ./foo/package.json to packages found
in lerna.json
sync-monorepo-packages --packages ./foo Using default fields, show what
--dry-run --no-summary would have synced from package.json
in current dir to packages in ./foo;
hide summary
sync-monorepo-packages --no-package-json Sync ./README.md to each package
./README.md found in lerna.json. Do not sync
anything in package.json
Found a bug? Report it at https://github.com/boneskull/sync-monorepo-packagesNotes
- If there are other fields which would make sense to copy as a default, please suggest!
- Use at your own risk!
--dry-runis your friend - When copying files, directories may be created relative to the dirpath of
lerna.jsonorpackage.json. For example, if you want to syncfoo/bar.mdto each package,packages/*/foo/bar.mdwill be the result. This may not work properly with explicitly-specified package directories! Use from project root to be sure. - There is an API that you can use. Go for it!
License
Copyright © 2019 Christopher Hiller. Licensed Apache-2.0