npmtimemachine

``` NPM Time Machine - Move package.json through the time!

Usage: npmtimemachine [OPTIONS]

Arguments: Target date (format: DD-MM-YYYY)

Options: -f input file [default: package.json] -o output file [default: package.json.out] --no-cache Don't use / reload cache --silent Silent mode --dry-run Dry run - show changes only -h, --help Print help (see more with '--help') ```

Description

npm_time_machine is a package.json point-in-time "pinner". Given the date it'll compare package.json pin with latest stable version for a library and use the newer one.

Intended use is to bisect dates in order to find point where upgrade can be managed. E.g. by avoiding scenarios where multiple core libraries undergo change.

Resolution example

package.json: - Package A - version 1.0.0 - Package B - version 1.0.0

State at: 01-01-2020 - Package A - Version 0.5.0 - Package B - Version 1.1.0

Resolved state for 01-01-2020: - Package A: Version 1.0.0 (package.json has newer than target date) - Package B: Version 1.1.0 (target date has newer version)

Rationale

Reasonable, agile solution is to split upgrades into multiple "checkpoints".

Each checkpoint is small and stable enough that it can be merged into the code-base and full upgrade can be worked over course of months without disrupting progress.

As I hadn't found the tool to do it I decided to write my own.

Demo

Caveats / known issues