You can install checksync
if you want, but the easiest way to use it is via npx
.
npx checksync --help
For detailed usage information, run npx checksync --help
.
-
Add synchronization tags to files indicating what sections to synchronize and with which files:
// my-javascriptfile.js // sync-start:mysyncid ./my-pythonfile.py /** * Some code that needs to be synchronised. */ // sync-end:mysyncid
# my-pythonfile.py # sync-start:mysyncid ./my-javascriptfile.js ''' Some code that needs to be synchronised. ''' # sync-end:mysyncid
Use consecutive
sync-start
tags with the same identifier to target multiple files.// my-csharpfile.cs // sync-start:mysyncid ./my-pythonfile.py // sync-start:mysyncid ./my-javascriptfile.js /** * Some code that needs to be synchronised. */ // sync-end:mysyncid
-
Run
checksync
to verify the tags are correct:yarn checksync <globs|files|dirs>
-
Run with
--update-tags
or-u
to automatically insert the missing checksums:yarn checksync -u <globs|files|dirs>
-
Add a pre-commit step to run
checksync
on commiting changes so that you catch when synchronized blocks change. You can do this using a package like husky, or pre-commit. -
Commit your tagged files!
To get more information about the various arguments that checksync
supports as well as information about sync-tags, run yarn checksync --help
.
All target paths are relative to your project root directory. By default, this is determined, using ancesdir
to be the ancestor directory of the files being processed that contains package.json
. If you want to specify a different root (for example, if you're syncing across multiple packages in a monorepo) you can specify a custom marker name using the --root-marker
argument.
For details on contributing to checksync
, checkout our contribution guidelines.