polylith

https://polylith.gitbook.io/ and https://github.com/polyfy/polylith
seancorfield 2021-06-08T06:17:56.076600Z

In which I talk about some of the benefits we’re finding from our early use of Polylith: https://corfield.org/blog/2021/06/06/deps-edn-monorepo-3/

👍 2
8
🎉 2
flightcubs 2021-06-08T07:48:46.077500Z

Thanks for sharing 🙂

tengstrand 2021-06-08T06:45:34.076900Z

Nice and well written blog post! I agree with everything you write.

2
2021-06-08T08:18:45.078800Z

when running clojure -M:poly ... where is the polyfy/polylith github repo cloned?

seancorfield 2021-06-08T08:32:19.079Z

Into ~/.gitlibs

seancorfield 2021-06-08T08:32:52.079200Z

That's standard Clojure CLI behavior

2021-06-08T08:47:15.079400Z

Oh! Clojure CLI noob here 😁 thanks !

seancorfield 2021-06-08T23:42:28.086100Z

The Clojure CLI can execute any (public) function that accepts a hash map. That means you can do:

clojure -X:dev com.acme.thing.interface/some-process
and it will execute a function from components/thing using the development project. That’s a pretty heavy-handed set of dependencies so would you: a) stick with the above and just not care about the overhead of the full set of :dev dependencies? b) create an ad hoc alias in the workspace-level deps.edn file to support this exec usage? (bearing in mind you’ll need to maintain it and update it if the component’s dependencies change) c) create a projects entry to provide a Polylith-“compatible” deps.edn file to support this exec usage? (at which point I’d say, hey, is it reasonable to have a project that uses no bases?) (this question just cropped up today at work as I’m about to refactor part of our build tool pipeline into a Polylith component)