1.0.18 • Published 3 months ago

report-missing-dependencies v1.0.18

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

report-missing-dependencies: Check all the dependencies in the package.json

This utility will parse the *.js files and the *.ts files in your src folder to identify all packages used in the import {xxx} from "package" statement. And it will report an error if that package is missing from the package.json.

Features

  • Reports an error if a package (e.g. import {xx} from "my-package") is used in the src folder but not defined in the dependencies section (or peerDependencies section) of the package.json.
  • Reports an error if a type is imported from a package (e.g. import type {MyType} from "my-package") but that package is not in the devDependencies section of the package.json.

Usage

{
    "name": "your-project",
    ...
    "scripts": {
        "tsc": "tsc --build tsconfig.json",
        "build": "report-missing-dependencies && npm run tsc"
    },
    "devDependencies": {
        "report-missing-dependencies": "*"
    }
}

Command line

Usage: report-missing-dependencies [options]

Options:
--cwd <string>                     Execution folder
                                   (default: ".")
--src <string>                     Source folder (default: "src")
--ignoredDependencies <string...>  Packages that are used in the `src` folder
                                   (e.g. `import fs from "fs"`) but do not
                                   need to be added to the `dependencies`
                                   section of the `package.json`.
                                   (default: "fs http net url")
--runtimeDependencies <string...>  Packages that are not used in an import
                                   statement in the `src` folder but still
                                   need to be specified in the `dependencies`
                                   section of the `package.json`.
                                   (default: "")
--testMatch <string...>            The glob patterns uses to detect test files.
                                   (default: "**/__tests__/**/*.?(m|c)[jt]s?(x) **/__stories__/**/*.?(m|c)[jt]s?(x) **/?(*.)+(spec|specs|test|tests|story|stories).?(m|c)[jt]s?(x)")
-h, --help                         display help for command

Configuration

//.rmdrc.js
const builtinModules = require("module").builtinModules;
module.exports = {
    src: "src",
    ignoredDependencies: [...builtinModules],
    runtimeDependencies: [],
    testMatch: [
        "**/__tests__/**/*.?(m|c)[jt]s?(x)",
        "**/__stories__/**/*.?(m|c)[jt]s?(x)",
        "**/?(*.)+(spec|specs|test|tests|story|stories).?(m|c)[jt]s?(x)"
    ]
}

Why

Invalid dependencies in the package.json of a project can cause any issues.

  • E.g. When working on a mono-repo using a toold like NX, a missing dependency on one of the projects in the mono-repo can cause NX not to compile the missing dependency causing errors at runtime.
  • E.g. When working on a mono-repo using a toold like NX, a extraneout dependency on one of the projects in the mono-repo can cause NX compile the extraneous dependency causing a slower development cycle.
  • E.g. If a runtime dependency is incorrectly places in the devDependencies rather than the dependencies, you will not notice any issue in development mode (because yarn install installs all dependencies in the node_modules folder), but you will experience some runtime errors in production (because yarn isntall --production does not install dev dependencies).

You can arguably use depcheck to identify missing dependencies. In fact, depcheck has many more options than report-missing-dependencies. But report-missing-dependencies has the advantage that it can be used in the Continuous Integration pipeline.

1.0.18

3 months ago

1.0.17

3 months ago

1.0.16

3 months ago

1.0.15

3 months ago

1.0.14

1 year ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago