clj-kondo

weavejester 2026-03-12T16:06:51.220229Z

Am I correct in thinking that --copy-configs is intended for both caching config exports in the local filesystem, and for allowing the user to omit the full classpath under --lint? Or, to put it another way, is:

clj-kondo --lint "$(clojure -Spath)"
Equivalent to:
clj-kondo --lint "$(clojure -Spath)" --copy-configs --skip-lint
clj-kondo --lint src:test
(Assuming src and test are the only local directories on the classpath.)

borkdude 2026-03-12T16:11:03.348169Z

no, they are not equivalent. --copy-configs is always opt-in

borkdude 2026-03-12T16:11:29.075379Z

clj-kondo --lint "$(clojure -Spath)" --copy-configs --skip-lint
this will only copy the configs, not analyze the dependencies btw.

borkdude 2026-03-12T16:12:15.182929Z

This will analyze/lint all the dependencies and sources. But not copy any configs.

clj-kondo --lint "$(clojure -Spath)"
Thus: clj-kondo will be aware of vars in your dependencies, but will not be aware of any bundled configurations.

borkdude 2026-03-12T16:12:34.693199Z

clj-kondo --lint "$(clojure -Spath)" --copy-configs --skip-lint
Here clj-kondo just extracts the configs, but will not analyze and deps

weavejester 2026-03-12T16:13:45.875879Z

So clj-kondo will only look for clj-kondo.exports if there is a --copy-configs option? And without that only checks the .clj-kondo directory for exports, not the --lint path?

borkdude 2026-03-12T16:14:17.843119Z

correct

weavejester 2026-03-12T16:15:00.647999Z

Thanks for the correction! And the cache is something different again?

borkdude 2026-03-12T16:15:43.614969Z

the .cache directory is just an implementation detail. clj-kondo persists data about code it's already seen there

weavejester 2026-03-12T16:16:50.591529Z

Thanks, I think I understand now.