report-missing-dependencies
TypeScript icon, indicating that this package has built-in type declarations

1.0.18 • Public • Published

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.

Readme

Keywords

none

Package Sidebar

Install

npm i report-missing-dependencies

Weekly Downloads

101

Version

1.0.18

License

MIT

Unpacked Size

79.5 kB

Total Files

53

Last publish

Collaborators

  • ncochard