pin-latest

Easily resolve 'latest' package versions

Usage no npm install needed!

<script type="module">
  import pinLatest from 'https://cdn.skypack.dev/pin-latest';
</script>

README

pin-latest

Small utility for converting package.json versions from latest to the actual latest version.

Quickstart

Install

npm i -g pin-latest
# or
yarn global add pin-latest
# or
npx pin-latest

Given the following package.json:

{
    "name": "example-project",
    "dependencies": {
        "react": "latest"
    }
}

Running pin-latest will result in the following output:

$ pin-latest .

{
    "name": "example-project",
    "dependencies": {
        "react": "^16.13.1"
    }
}

To save changes pass the --write flag:

$ pin-latest .
package.json updated.

$ cat package.json
{
    "name": "example-project",
    "dependencies": {
        "react": "^16.13.1"
    }
}

Usage

$ pin-latest --help

Usage
    $ pin-latest <project-directory>
Options
    --exact, -t     Set the exact version
    --write, -w     Write changes
    --version, -v   Version number
    --help, -h      Displays this message
    --debug, -d     Enable verbose logging

Exact

The --exact flag modifies the behavior of the version that is written.

If --exact is passed, the version will be written without a leading ^.

Example:

$ pin-latest .
{
    "react": "^1.0.0"
}

$ pin-latest --exact .
{
    "react": "1.0.0"
}

Write

The --write flag decides whether or not changes should be written to disk. If --write is not passed, the modified file is sent to stdout.

Programmatic Usage

You can also import the main PinLatest class to use pin-latest programmatically:

// my-script.ts
import PinLatest from 'pin-latest';

(async function() {
    await PinLatest({
        '.',
        exact: false,
        debug: false,
        write: false
    });
}())