package.json
{
"name": "dependency-cruiser",
"version": "16.3.2",
"description": "Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.",
"keywords": [
"static analysis",
"circular",
"dependencies",
"typescript",
"javascript",
"coffeescript",
"ES6",
"ES2015",
"AMD",
"CommonJS",
"validation",
"spelunking"
],
"author": "Sander Verweij (https://sverweij.github.io)",
"contributors": [
"Hirotaka Miyagi (https://mh4gf.dev)",
"TruongSinh Tran-Nguyen (https://truongsinh.pro)",
"Bastian Hess (https://github.com/bashess)",
"Álvaro Cuesta (https://github.com/alvaro-cuesta)",
"anna (https://github.com/annamooseity)",
"Radosław Kłos (https://klos.dev)",
"Joshua T (https://github.com/radiantly)",
"Ivan (https://github.com/Winner95)",
"Frieder Bluemle (https://github.com/friederbluemle)",
"davidparkagoda (https://github.com/davidparkagoda)",
"Matt Button (https://github.com/BRMatt)",
"Jon Lauridsen (https://jonlauridsen.com)",
"Klaus Meinhardt (https://github.com/ajafff)",
"cunzaizhuyi (https://github.com/cunzaizhuyi)",
"Greg Lockwood (https://github.com/greglockwood)",
"Jeremy Magland (https://github.com/magland)",
"Sebastian Landwehr (https://sebastianlandwehr.com)",
"Brody McKee (https://github.com/mrmckeb)",
"Bin (https://github.com/soulhat)",
"정건우 (https://www.zigae.com/)",
"Roy Swinkels (https://github.com/donroyco)",
"Martin Slota (https://github.com/martinslota)",
"Luke Page (https://github.com/lukeapage)",
"Emily Marigold Klassen (https://forivall.com)",
"Christian Vuerings (https://github.com/christianvuerings)",
"Yuanhai He (https://bestmike007.com)",
"Quentin de Metz (https://github.com/quentindemetz)",
"Lars Artmann (https://larsartmann.com)",
"Jessica Kerr (https://jessitron.com)",
"Creative Ataraxia (https://github.com/Creative-Ataraxia)",
"0xflotus (https://github.com/0xflotus)",
"Daniel Edholm Ignat (https://github.com/dignite)",
"Daniel Rodríguez Rivero (https://danielorodriguez.com)",
"Nick Ribal (https://github.com/elektronik2k5)",
"Richard Musiol (https://github.com/neelance)",
"Sharang Pai (https://sharangpai.me)",
"Stefan Gojan (https://stefan-gojan.de)",
"Tharun Rajendran (https://github.com/tharun208)",
"electrovir (https://github.com/electrovir)",
"fusheng (https://github.com/lin-hun)"
],
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/sverweij/dependency-cruiser.git"
},
"bugs": {
"url": "https://github.com/sverweij/dependency-cruiser/issues"
},
"homepage": "https://github.com/sverweij/dependency-cruiser",
"bin": {
"dependency-cruiser": "bin/dependency-cruise.mjs",
"dependency-cruise": "bin/dependency-cruise.mjs",
"depcruise": "bin/dependency-cruise.mjs",
"depcruise-baseline": "bin/depcruise-baseline.mjs",
"depcruise-fmt": "bin/depcruise-fmt.mjs",
"depcruise-wrap-stream-in-html": "bin/wrap-stream-in-html.mjs"
},
"main": "src/main/index.mjs",
"imports": {
"#configuration-schema": "./src/schema/configuration.schema.mjs",
"#cruise-result-schema": "./src/schema/cruise-result.schema.mjs",
"#*": "./src/*"
},
"exports": {
".": {
"types": "./types/dependency-cruiser.d.mts",
"import": "./src/main/index.mjs"
},
"./config-utl/extract-babel-config": {
"types": "./types/config-utl/extract-babel-config.d.mts",
"import": "./src/config-utl/extract-babel-config.mjs"
},
"./config-utl/extract-depcruise-config": {
"types": "./types/config-utl/extract-depcruise-config.d.mts",
"import": "./src/config-utl/extract-depcruise-config/index.mjs"
},
"./config-utl/extract-depcruise-options": {
"types": "./types/config-utl/extract-depcruise-options.d.mts",
"import": "./src/config-utl/extract-depcruise-options.mjs"
},
"./config-utl/extract-ts-config": {
"types": "./types/config-utl/extract-ts-config.d.mts",
"import": "./src/config-utl/extract-ts-config.mjs"
},
"./config-utl/extract-webpack-resolve-config": {
"types": "./types/config-utl/extract-webpack-resolve-config.d.mts",
"import": "./src/config-utl/extract-webpack-resolve-config.mjs"
},
"./sample-reporter-plugin": {
"types": "./types/plugins/stats-reporter-plugin.d.mts",
"import": "./configs/plugins/stats-reporter-plugin.mjs"
},
"./sample-3d-reporter-plugin": {
"types": "./types/plugins/3d-reporter-plugin.d.mts",
"import": "./configs/plugins/3d-reporter-plugin.mjs"
},
"./mermaid-reporter-plugin": {
"types": "./types/plugins/mermaid-reporter-plugin.d.mts",
"import": "./src/report/mermaid.mjs"
}
},
"types": "types/dependency-cruiser.d.mts",
"files": [
"bin",
"configs/**/*.cjs",
"configs/plugins/",
"src",
"!src/**/*.json",
"!src/**/*.md",
"!**/*.DS_Store",
"types/**/*.d.mts",
"LICENSE",
"package.json",
"README.md"
],
"scripts": {
"build": "make build",
"build:clean": "make clean",
"check": "npm-run-all build lint depcruise test:cover",
"check:full": "npm-run-all check test:glob",
"depcruise": "node ./bin/dependency-cruise.mjs src bin test configs types tools --ignore-known",
"depcruise:all": "node ./bin/dependency-cruise.mjs src bin test configs types tools",
"depcruise:baseline": "node ./bin/depcruise-baseline.mjs src bin test configs types tools",
"depcruise:explain": "node ./bin/dependency-cruise.mjs src bin test configs types tools --output-type err-long --progress none",
"depcruise:graph:doc": "npm-run-all depcruise:graph:doc:json --parallel depcruise:graph:doc:fmt-* depcruise:graph:doc:samples",
"depcruise:graph:doc:json": "node ./bin/dependency-cruise.mjs bin src test --output-type json --output-to node_modules/.cache/tmp_graph_deps.json --progress",
"depcruise:graph:doc:fmt-detail": "./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",
"depcruise:graph:doc:fmt-archi": "./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",
"depcruise:graph:doc:fmt-dir": "./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",
"depcruise:graph:doc:fmt-schema": "cd tools/schema && node ../../bin/dependency-cruise.mjs . --output-type dot | dot -T svg | tee ../overview.svg | node ../../bin/wrap-stream-in-html.mjs > ../../docs/schema-overview.html && cd -",
"depcruise:graph:doc:fmt-types": "cd types && node ../bin/dependency-cruise.mjs . --output-type dot | dot -T svg | tee overview.svg | ../bin/wrap-stream-in-html.mjs > overview.html && cd -",
"depcruise:graph:doc:samples": "sh tools/generate-samples.sh",
"depcruise:graph:mermaid": "node ./bin/dependency-cruise.mjs bin src --include-only ^src/ --collapse 2 --output-type mermaid",
"depcruise:graph:mermaid:diff": "node ./bin/dependency-cruise.mjs bin src test types tools --config configs/.dependency-cruiser-unlimited.mjs --output-type mermaid --reaches \"$(watskeburt $SHA)\"",
"depcruise:graph:view": "node ./bin/dependency-cruise.mjs bin src --prefix vscode://file/$(pwd)/ --config configs/.dependency-cruiser-show-metrics-config.mjs --output-type x-dot-webpage --progress cli-feedback --highlight \"$(watskeburt main)\" | browser",
"depcruise:graph:view:diff": "node ./bin/dependency-cruise.mjs bin src test --prefix vscode://file/$(pwd)/ --config configs/.dependency-cruiser-unlimited.mjs --output-type x-dot-webpage --progress cli-feedback --reaches \"$(watskeburt main)\" | browser",
"depcruise:report": "node ./bin/dependency-cruise.mjs src bin test configs types --output-type err-html --config configs/.dependency-cruiser-show-metrics-config.mjs --output-to dependency-violations.html",
"depcruise:report:view": "node ./bin/dependency-cruise.mjs src bin test configs types --output-type err-html --config configs/.dependency-cruiser-show-metrics-config.mjs --output-to - | browser",
"depcruise:focus": "node ./bin/dependency-cruise.mjs src bin test configs types tools --progress --no-cache --output-type text --focus",
"depcruise:reaches": "node ./bin/dependency-cruise.mjs src bin test configs types tools --progress --no-cache --config configs/.dependency-cruiser-unlimited.mjs --output-type text --reaches",
"format": "prettier --log-level warn --write \"src/**/*.cjs\" \"configs/**/*.cjs\" \"tools/**/*.mjs\" \"bin/*\" \"types/*.d.mts\" \"test/**/*.spec.{cjs,js}\" \"test/**/*.{spec,utl}.mjs\"",
"format:check": "prettier --log-level warn --check \"src/**/*.cjs\" \"configs/**/*.cjs\" \"tools/**/*.mjs\" \"bin/*\" \"types/*.d.mts\" \"test/**/*.spec.{cjs,js}\" \"test/**/*.{spec,utl}.mjs\"",
"lint": "npm-run-all --parallel --aggregate-output lint:eslint format:check lint:types",
"lint:eslint": "eslint bin/dependency-cruise.mjs bin src test configs tools/**/*.mjs --cache --cache-location node_modules/.cache/eslint/",
"lint:eslint:fix": "eslint --fix bin src test configs tools/**/*.mjs --cache --cache-location node_modules/.cache/eslint/",
"lint:eslint:clear-caches": "rm -rf node_modules/.cache/eslint/",
"lint:fix": "npm-run-all lint:eslint:fix format lint:types:fix",
"lint:types": "npm-run-all lint:types:tsc lint:types:lint",
"lint:types:tsc": "tsc --project types/tsconfig.json",
"lint:types:lint": "eslint --no-ignore --config types/.eslintrc.json types/*.d.mts",
"lint:types:fix": "eslint --no-ignore --config types/.eslintrc.json --fix types/*.d.mts",
"prepack": "clean-pkg-json --dry --keep overrides --keep resolutions | jq '.scripts = {test: \"echo for test, build and static analysis scripts: see the github repository\"}' | jq '.type = \"module\"' > smaller-package.json && mv smaller-package.json package.json",
"postpack": "git restore package.json",
"prepare": "husky install",
"scm:push": "run-p --aggregate-output scm:push:*",
"scm:push:bitbucket-mirror": "run-p --aggregate-output scm:push:bitbucket-mirror:*",
"scm:push:bitbucket-mirror:commits": "git push bitbucket-mirror",
"scm:push:bitbucket-mirror:tags": "git push --tags bitbucket-mirror",
"scm:push:github": "run-p --aggregate-output scm:push:github:*",
"scm:push:github:commits": "git push",
"scm:push:github:tags": "git push --tags",
"scm:push:gitlab-mirror": "run-p --aggregate-output scm:push:gitlab-mirror:*",
"scm:push:gitlab-mirror:commits": "git push gitlab-mirror",
"scm:push:gitlab-mirror:tags": "git push --tags gitlab-mirror",
"scm:stage": "git add .",
"test": "LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings mocha",
"test:i": "LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings mocha --grep \"^\\[[I]\\]\"",
"test:u": "LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings mocha --grep \"^\\[[U]\\]\"",
"test:e": "LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings mocha --grep \"^\\[[E]\\]\"",
"test:cover": "LANG=en_US.UTF-8 NODE_OPTIONS=--no-warnings c8 mocha",
"test:glob": "set -f && test \"`bin/dependency-cruise.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)\"",
"test:load": "hyperfine --warmup 3 --runs 30 \"bin/dependency-cruise.mjs src bin test configs types tools --ignore-known --no-cache --no-progress\"",
"test:load:short": "hyperfine --warmup 1 --runs 5 \"bin/dependency-cruise.mjs src bin test configs types tools --ignore-known --no-cache --no-progress\"",
"test:load:cached": "hyperfine --warmup 3 --runs 30 \"bin/dependency-cruise.mjs src bin test configs types tools --ignore-known --cache node_modules/.cache/dependency-cruiser/load-cached --no-progress\"",
"test:load:cached:short": "hyperfine --warmup 1 --runs 5 \"bin/dependency-cruise.mjs src bin test configs types tools --ignore-known --cache node_modules/.cache/dependency-cruiser/load-cached --no-progress\"",
"update-dependencies": "npm-run-all upem:update upem:install build:clean build lint:eslint:clear-caches lint:fix depcruise test:cover",
"upem-outdated": "npm outdated --json --long | upem --dry-run",
"upem:install": "npm install",
"upem:update": "npm outdated --json --long | upem | pbcopy && pbpaste",
"version": "npm-run-all build depcruise:graph:doc scm:stage"
},
"dependencies": {
"acorn": "8.11.3",
"acorn-jsx": "5.3.2",
"acorn-jsx-walk": "2.0.0",
"acorn-loose": "8.4.0",
"acorn-walk": "8.3.2",
"ajv": "8.13.0",
"chalk": "5.3.0",
"commander": "12.0.0",
"enhanced-resolve": "5.16.1",
"figures": "6.1.0",
"ignore": "5.3.1",
"indent-string": "5.0.0",
"interpret": "^3.1.1",
"is-installed-globally": "1.0.0",
"json5": "2.2.3",
"lodash": "4.17.21",
"memoize": "10.0.0",
"picomatch": "4.0.2",
"prompts": "2.4.2",
"rechoir": "^0.8.0",
"safe-regex": "2.1.1",
"semver": "^7.6.1",
"semver-try-require": "7.0.0",
"teamcity-service-messages": "0.1.14",
"tsconfig-paths-webpack-plugin": "4.1.0",
"watskeburt": "4.0.2",
"wrap-ansi": "9.0.0"
},
"devDependencies": {
"@babel/core": "7.24.5",
"@babel/plugin-transform-modules-commonjs": "7.24.1",
"@babel/preset-typescript": "7.24.1",
"@swc/core": "1.5.5",
"@types/lodash": "4.17.1",
"@types/node": "20.12.11",
"@types/prompts": "2.4.9",
"@typescript-eslint/eslint-plugin": "7.8.0",
"@typescript-eslint/parser": "7.8.0",
"@vue/compiler-sfc": "3.4.27",
"c8": "9.1.0",
"clean-pkg-json": "1.2.0",
"coffeescript": "2.7.0",
"eslint": "^8.57.0",
"eslint-config-moving-meadow": "4.0.2",
"eslint-config-prettier": "9.1.0",
"eslint-plugin-budapestian": "6.0.0",
"eslint-plugin-eslint-comments": "3.2.0",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-mocha": "10.4.3",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-security": "3.0.0",
"eslint-plugin-unicorn": "^52.0.0",
"husky": "9.0.11",
"lint-staged": "15.2.2",
"mocha": "10.4.0",
"normalize-newline": "4.1.0",
"npm-run-all": "4.1.5",
"prettier": "3.2.5",
"proxyquire": "2.1.3",
"shx": "0.3.4",
"svelte": "3.59.1",
"symlink-dir": "6.0.0",
"typescript": "5.4.5",
"upem": "9.0.4",
"vue-template-compiler": "2.7.16",
"yarn": "1.22.22"
},
"overrides": {
"semver": "^7.6.1",
"postcss": "^8.4.31"
},
"resolutions": {
"semver": "^7.6.1",
"postcss": "^8.4.31"
},
"upem": {
"policies": [
{
"package": "eslint",
"policy": "wanted",
"because": "@typescript-eslint/parser 7.5.0 (currently _latest_) isn't on eslint 9 yet (it peer requires ^8.56.0)"
},
{
"package": "interpret",
"policy": "wanted",
"because": "we want to keep interpret ~similar to what webpack-cli uses (which is ^3.1.1 since 2022-11-15). See https://github.com/webpack/webpack-cli/blame/master/packages/webpack-cli/package.json"
},
{
"package": "rechoir",
"policy": "wanted",
"because": "we want to keep rechoir ~similar to what webpack-cli uses (which is ^0.8.0 since 2022-11-15). See https://github.com/webpack/webpack-cli/blame/master/packages/webpack-cli/package.json"
},
{
"package": "svelte",
"policy": "pin",
"because": "upgrading to supporting svelte 4 will require a non-trivial amount of labour (which we are going to invest, but not right now)"
}
]
},
"engines": {
"node": "^18.17||>=20"
},
"supportedTranspilers": {
"babel": ">=7.0.0 <8.0.0",
"coffee-script": ">=1.0.0 <2.0.0",
"coffeescript": ">=1.0.0 <3.0.0",
"livescript": ">=1.0.0 <2.0.0",
"svelte": ">=3.0.0 <4.0.0",
"swc": ">=1.0.0 <2.0.0",
"typescript": ">=2.0.0 <6.0.0",
"vue-template-compiler": ">=2.0.0 <3.0.0",
"@vue/compiler-sfc": ">=3.0.0 <4.0.0"
}
}