npm PACKAGE

dependency-cruiser 18.6.0

Warn

PkgFire would install this release with a warning.·Checked 2 hours ago·Published 11 October 2026

npmjs.com

Why

  • warnSuspicious behaviour

    Difference between manifest and package.json found: devDependencies: esbuild: Manifest("0.28.2"), package.json("None") prettier: Manifest("3.9.10"), package.json("None") husky: Manifest("9.1.7"), package.json("None") @babel/core: Manifest("^7.29.7"), package.json("None") proxyquire: Manifest("2.1.3"), package.json("None") typescript: Manifest("^6.0.3"), package.json("None") svgo: Manifest("4.1.0"), package.json("None") yarn: Manifest("1.22.22"), package.json("None") lint-staged: Manifest("17.6.0"), package.json("None") symlink-dir: Manifest("^7.1.0"), package.json("None") @babel/plugin-transform-modules-commonjs: Manifest("^7.29.7"), package.json("None") @vue/compiler-sfc: Manifest("3.5.43"), package.json("None") c8: Manifest("12.0.0"), package.json("None") coffeescript: Manifest("2.7.0"), package.json("None") npm-run-all2: Manifest("9.0.3"), package.json("None") vue-template-compiler: Manifest("2.7.16"), package.json("None") @types/prompts: Manifest("2.4.9"), package.json("None") upem: Manifest("11.0.1"), package.json("None") @babel/preset-typescript: Manifest("^7.29.7"), package.json("None") normalize-newline: Manifest("5.0.0"), package.json("None") @types/node: Manifest("^26.6.5"), package.json("None") clean-pkg-json: Manifest("2.0.0"), package.json("None") ajv: Manifest("8.20.0"), package.json("None") oxlint: Manifest("1.87.0"), package.json("None") svelte: Manifest("5.57.2"), package.json("None") @swc/core: Manifest("1.16.18"), package.json("None") mocha: Manifest("12.0.3"), package.json("None") scripts: depcruise:all: Manifest("node ./bin/dependency-cruiser.mjs src bin test configs types tools"), package.json("None") update-dependencies: Manifest("npm-run-all --node-run upem:update upem:install build:clean build lint:eslint:clear-caches lint:fix depcruise test:cover"), package.json("None") format: Manifest("prettier --log-level warn --write "src/**/*.?js" "configs/**/*.?js" "tools/**/*.mjs" "bin/*" "types/*.d.mts" "test/**/*.spec.{cjs,js}" "test/**/*.{spec,utl}.mjs""), package.json("None") prepack:format-src-with-tabs: Manifest("prettier --log-level warn --write --use-tabs bin src types configs"), package.json("None") test:cover: Manifest("LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings NO_COLOR=1 c8 mocha"), package.json("None") scm:push:gitlab-mirror:tags: Manifest("git push --tags gitlab-mirror"), package.json("None") check: Manifest("npm-run-all --node-run build lint depcruise test:cover"), package.json("None") depcruise:graph:doc:samples: Manifest("sh tools/generate-samples.sh"), package.json("None") check:full: Manifest("npm-run-all --node-run check test:glob"), package.json("None") test: Manifest("LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings NO_COLOR=1 mocha"), package.json("echo see github for test, build and analysis scripts") scm:push:gitlab-mirror:commits: Manifest("git push gitlab-mirror"), package.json("None") lint:fix: Manifest("npm-run-all --node-run lint:eslint:fix format lint:types:fix"), package.json("None") format:check: Manifest("prettier --log-level warn --check "src/**/*.?js" "configs/**/*.?js" "tools/**/*.mjs" "bin/*" "types/*.d.mts" "test/**/*.spec.{cjs,js}" "test/**/*.{spec,utl}.mjs""), package.json("None") scm:push:gitlab-mirror: Manifest("run-p --aggregate-output scm:push:gitlab-mirror:*"), package.json("None") depcruise:graph:doc:fmt-detail: Manifest("./bin/depcruise-fmt.mjs -T dot -f - node_modules/.cache/tmp_graph_deps.json | dot -T svg | tee doc/real-world-samples/dependency-cruiser-without-node_modules.svg | node bin/wrap-stream-in-html.mjs > docs/dependency-cruiser-dependency-graph.html"), package.json("None") test:load:cached: Manifest("hyperfine --warmup 3 --runs 30 "bin/dependency-cruiser.mjs src bin test configs types tools --ignore-known --cache node_modules/.cache/dependency-cruiser/load-cached --no-progress""), package.json("None") depcruise:graph:view: Manifest("node ./bin/dependency-cruiser.mjs bin src --prefix vscode://file/$(pwd)/ --config configs/.dependency-cruiser-show-metrics-config.mjs --output-type dot-webpage --progress cli-feedback --highlight "$(watskeburt main)" | browser"), package.json("None") scm:push:github: Manifest("run-p --aggregate-output scm:push:github:*"), package.json("None") lint:types:lint: Manifest("oxlint types/*.d.mts"), package.json("None") depcruise:graph:doc: Manifest("npm-run-all --node-run depcruise:graph:doc:json --parallel depcruise:graph:doc:fmt-* depcruise:graph:doc:samples"), package.json("None") depcruise:graph:mermaid: Manifest("node ./bin/dependency-cruiser.mjs bin src --include-only ^src/ --collapse 2 --output-type mermaid"), package.json("None") lint:eslint:clear-caches: Manifest("rm -rf node_modules/.cache/eslint/"), package.json("None") depcruise:baseline: Manifest("node ./bin/dependency-cruiser.mjs src bin test configs types tools --baseline --progress"), package.json("None") test:load:cached:short: Manifest("hyperfine --warmup 1 --runs 5 "bin/dependency-cruiser.mjs src bin test configs types tools --ignore-known --cache node_modules/.cache/dependency-cruiser/load-cached --no-progress""), package.json("None") depcruise: Manifest("node ./bin/dependency-cruiser.mjs src bin test configs types tools --ignore-known"), package.json("None") depcruise:explain: Manifest("node ./bin/dependency-cruiser.mjs src bin test configs types tools --output-type err-long --progress none"), package.json("None") scm:push:github:tags: Manifest("git push --tags"), package.json("None") depcruise:report:view: Manifest("node ./bin/dependency-cruiser.mjs src bin test configs types --output-type err-html --config configs/.dependency-cruiser-show-metrics-config.mjs --output-to - | browser"), package.json("None") depcruise:graph:doc:json: Manifest("node ./bin/dependency-cruiser.mjs bin src test --output-type json --output-to node_modules/.cache/tmp_graph_deps.json --progress"), package.json("None") lint: Manifest("npm-run-all --parallel --aggregate-output --node-run lint:eslint format:check lint:types"), package.json("None") prepack: Manifest("npm-run-all --node-run prepack:format-src-with-tabs prepack:clean-pkg-json"), package.json("None") test:glob: Manifest("set -f && test "`bin/dependency-cruiser.mjs --no-config test/extract/__mocks__/gather-globbing/packages/**/src/**/*.js | grep "no dependency violations found"`" = "✔ no dependency violations found (6 modules, 0 dependencies cruised)""), package.json("None") postpack: Manifest("git restore package.json bin src types configs"), package.json("None") test:e: Manifest("LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings NO_COLOR=1 mocha --grep "^\[[E]\]""), package.json("None") prepack:clean-pkg-json: Manifest("clean-pkg-json --dry | jq '.scripts = {test: "echo see github for test, build and analysis scripts"}' | jq '.type = "module"' > smaller-package.json && mv smaller-package.json package.json && prettier --log-level warn --write --use-tabs package.json"), package.json("None") lint:types:fix: Manifest("oxlint --fix types/*.d.mts"), package.json("None") test:i: Manifest("LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings NO_COLOR=1 mocha --grep "^\[[I]\]""), package.json("None") scm:stage: Manifest("git add ."), package.json("None") scm:push:github:commits: Manifest("git push"), package.json("None") depcruise:focus: Manifest("node ./bin/dependency-cruiser.mjs src bin test configs types tools --progress --no-cache --output-type text --focus"), package.json("None") version: Manifest("npm-run-all --node-run build depcruise:graph:doc scm:stage"), package.json("None") lint:types: Manifest("npm-run-all --node-run lint:types:tsc lint:types:lint"), package.json("None") scm:push:bitbucket-mirror:tags: Manifest("git push --tags bitbucket-mirror"), package.json("None") depcruise:graph:doc:fmt-schema: Manifest("cd tools/schema && node ../../bin/dependency-cruiser.mjs . --output-type dot | dot -T svg | tee ../overview.svg | node ../../bin/wrap-stream-in-html.mjs > ../../docs/schema-overview.html && cd -"), package.json("None") build:clean: Manifest("make clean"), package.json("None") scm:push: Manifest("run-p --aggregate-output scm:push:*"), package.json("None") scm:push:bitbucket-mirror:commits: Manifest("git push bitbucket-mirror"), package.json("None") build: Manifest("make build"), package.json("None") test:load: Manifest("hyperfine --warmup 3 --runs 30 "bin/dependency-cruiser.mjs src bin test configs types tools --ignore-known --no-cache --no-progress""), package.json("None") upem:install: Manifest("npm install"), package.json("None") lint:eslint: Manifest("oxlint bin/dependency-cruiser.mjs bin src test configs tools/**/*.mjs"), package.json("None") prepare: Manifest("husky"), package.json("None") depcruise:graph:view:diff: Manifest("node ./bin/dependency-cruiser.mjs bin src test --prefix vscode://file/$(pwd)/ --config configs/.dependency-cruiser-unlimited.mjs --output-type dot-webpage --progress cli-feedback --affected | browser"), package.json("None") depcruise:graph:doc:fmt-dir: Manifest("./bin/depcruise-fmt.mjs -T ddot -f - node_modules/.cache/tmp_graph_deps.json | dot -T svg -Grankdir=TD | tee doc/real-world-samples/dependency-cruiser-dir-graph.svg | node bin/wrap-stream-in-html.mjs > docs/dependency-cruiser-dir-graph.html"), package.json("None") depcruise:report: Manifest("node ./bin/dependency-cruiser.mjs src bin test configs types --output-type err-html --config configs/.dependency-cruiser-show-metrics-config.mjs --output-to dependency-violations.html"), package.json("None") depcruise:reaches: Manifest("node ./bin/dependency-cruiser.mjs src bin test configs types tools --progress --no-cache --config configs/.dependency-cruiser-unlimited.mjs --output-type text --reaches"), package.json("None") upem:update: Manifest("npm outdated --json --long | upem | pbcopy && pbpaste"), package.json("None") scm:push:bitbucket-mirror: Manifest("run-p --aggregate-output scm:push:bitbucket-mirror:*"), package.json("None") lint:eslint:fix: Manifest("oxlint bin/dependency-cruiser.mjs bin src test configs tools/**/*.mjs --fix"), package.json("None") depcruise:graph:doc:fmt-types: Manifest("cd types && node ../bin/dependency-cruiser.mjs . --output-type dot | dot -T svg | tee overview.svg | ../bin/wrap-stream-in-html.mjs > overview.html && cd -"), package.json("None") test:load:short: Manifest("hyperfine --warmup 1 --runs 5 "bin/dependency-cruiser.mjs src bin test configs types tools --ignore-known --no-cache --no-progress""), package.json("None") lint:types:tsc: Manifest("tsc --project types/tsconfig.json"), package.json("None") depcruise:graph:mermaid:diff: Manifest("node ./bin/dependency-cruiser.mjs bin src test types tools --config configs/.dependency-cruiser-unlimited.mjs --output-type mermaid --affected $SHA"), package.json("None") test:u: Manifest("LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings NO_COLOR=1 mocha --grep "^\[[U]\]""), package.json("None") depcruise:graph:doc:fmt-archi: Manifest("./bin/depcruise-fmt.mjs -T archi -f - node_modules/.cache/tmp_graph_deps.json | dot -T svg -Gordering=in -Grankdir=TD | tee doc/real-world-samples/dependency-cruiser-archi-graph.svg | node bin/wrap-stream-in-html.mjs > docs/dependency-cruiser-archi-graph.html"), package.json("None") upem-outdated: Manifest("npm outdated --json --long | upem --dry-run"), package.json("None")

Provenance

A registry signature proves the registry served these bytes unaltered. Build provenance proves which workflow built them from which commit; a stolen publishing token can fake the first but not the second.

Signature
Verified against the registry's key
Build provenance
Attested · source commit ↗

What the code does

On its own this is weak signal: plenty of honest libraries read files or talk to the network. What PkgFire watches is a release gaining something the one before it did not.

Code reading

PkgFire's own reading of the files: what the code can do.

  • code-execsrc/report/dot-webpage/dot-module.mjs

Source patterns

Patterns found in the source, including those malware is known to use.

  • capability-filesystem-read
  • capability-network-outbound
  • capability-process-spawn
  • metadata_mismatch

Other checked releases

Check every dependency before it installs

This page is one release. PkgFire checks every package in your lockfile, on every install and in every pull request, and blocks the bad ones before they run.