[go: up one dir, main page]

Rush StackShopBlogEvents
Skip to main content

Introduction

Lockfile Lint is a companion tool for preventing problems from reoccurring, after you've solved them using Lockfile Explorer. Similar to ESLint, it provides a config file lockfile-lint.json where you can define rules that check for various issues in your lockfile.

Quick start​

  1. Lockfile Lint is included in the same package as Lockfile Explorer. If you didn't do so already, install it like this:

    npm install --global @rushstack/lockfile-explorer
  2. Create the lockfile-lint.json config file:

    cd my-rush-repo

    lockfile-lint init
  3. Edit the config file to enable policies that you want to check.

  4. Test the policies:

    lockfile-lint check

    If issues are found, the output might look like this:

    Rush Lockfile Lint - https://lfx.rushstack.io/

    Checking project "my-toolchain"
    Checking project "my-app"
    Checking project "my-controls"

    PROBLEM: [restrict-versions] The version of "whatwg-fetch" should match "2.x"; actual version is "3.6.2"

    PROBLEM: [restrict-versions] The version of "colors" should match "2.x"; actual version is "1.4.0"
  5. Add lockfile-lint to your CI validation pipeline. When the tool reports problems, the process exit code will be nonzero, causing the build to fail.

Config file​

common/config/lockfile-lint/lockfile-lint.json

/**
* Config file for Lockfile Lint. For more info, please visit: https://lfx.rushstack.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/lockfile-explorer/lockfile-lint.schema.json",

/**
* The list of rules to be checked by Lockfile Lint. For each rule configuration, the
* type of rule is determined by the `rule` field.
*/
"rules": [
// /**
// * The `restrict-versions` rule enforces that direct and indirect dependencies must
// * satisfy a specified version range.
// */
// {
// "rule": "restrict-versions",
//
// /**
// * The name of a workspace project to analyze.
// */
// "project": "@my-company/my-app",
//
// /**
// * Indicates the package versions to be checked. The `requiredVersions` key is
// * the name of an NPM package, and the value is a SemVer range. If the project has
// * that NPM package as a dependency, then its version must satisfy the SemVer range.
// * This check also applies to devDependencies and peerDependencies, as well as any
// * indirect dependencies of the project.
// */
// "requiredVersions": {
// /**
// * For example, if `react-router` appears anywhere in the dependency graph of
// * `@my-company/my-app`, then it must be version 5 or 6.
// */
// "react-router": "5.x || 6.x",
// "react": "^18.3.0",
// "react-dom": "^18.3.0"
// }
// }
]
}

See also​