{"id":32196282,"url":"https://github.com/clojureman/hotsauce","last_synced_at":"2026-07-13T06:31:36.551Z","repository":{"id":62432907,"uuid":"85508735","full_name":"clojureman/hotsauce","owner":"clojureman","description":"A lein checkouts alternative.  BETA","archived":false,"fork":false,"pushed_at":"2017-03-30T00:27:23.000Z","size":30,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-06-30T01:15:21.439Z","etag":null,"topics":["clojure","clojurescript","dependencies","hot-reload","leiningen"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clojureman.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-19T21:07:00.000Z","updated_at":"2018-10-23T20:51:46.000Z","dependencies_parsed_at":"2022-11-01T21:01:19.999Z","dependency_job_id":null,"html_url":"https://github.com/clojureman/hotsauce","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/clojureman/hotsauce","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojureman%2Fhotsauce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojureman%2Fhotsauce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojureman%2Fhotsauce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojureman%2Fhotsauce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clojureman","download_url":"https://codeload.github.com/clojureman/hotsauce/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clojureman%2Fhotsauce/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35413537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-13T02:00:06.543Z","response_time":119,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clojure","clojurescript","dependencies","hot-reload","leiningen"],"created_at":"2025-10-22T02:30:42.293Z","updated_at":"2026-07-13T06:31:36.546Z","avatar_url":"https://github.com/clojureman.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hotsauce *(BETA)*\n*- say goodbye to checkouts*\n\n\u003e * Hot load source code and resources from libraries *(including transitive dependencies).*\n\u003e * No changes to your projects or project.clj\n\u003e * No monkey business with symlinks\n\n## It's time to spice up your library development\n\nFor anything but toy projects, it essential to break up the code into separate libraries.\n\nIn the Clojure world this works great, but there's a little problem.\n\n### The problem\nIt is a hassle to work simultaneously on a Clojure project and the libraries\nit depends on.\n\u003cbr\u003e\nWhenever a change is made to a source file of a library, that library has to be built, \ninstalled in a repo, and the main project has to be rebuilt. Only then can \nyou run your code and check if the change worked or not.\n\nWorse yet, you might have libraries in you application that depend on the library you \nchanged, so you need to rebuild those as well before rebuilding the application.\n\n*This goes counter to the try-it-out-now culture so central to the cult of the REPL.*\n\nIt is no wonder that some people opt to \n[cowboy code](https://en.wikipedia.org/wiki/Cowboy_coding), \nrefraining from properly partitioning their code into separately versioned libraries.\n\n### Checkouts\nLeiningen acknowledges the problem and offers a partial solution called checkouts.\nIt works well, but [it can be bothersome and error-prone](/doc/CHECKOUTS.md).\n\n### The solution\n\nAdd some Hotsauce! \n\nHotsauce is built on the same idea as checkouts, but removes most of the hassle.\n\n### How it works\n\nLet's say you have some projects that depend on libraries x and y, and that \nthe source code of these has been checked out to your local filesystem.\n\n * Register the local path with Hotsauce:\n   \n   ``lein hotsauce path-to-lib-x path-to-lib-y``\n   \n * Make the libraries **hot** by typing\n   \n   ``lein hotsauce hot x y``\n   \n * Make sure Hotsauce is active by typing\n \n   ``lein hotsauce on``\n   \n   (You can always turn Hotsauce off again with ``lein hotsauce off``)\n   \nLeiningen will now do all its normal tasks on any project as, *fetching \nsource and resources related to project x and y from the local filesystem*.\n\nSuddenly the local source is hot!\n\nStart the main projects with your favourite IDE or just ``lein repl``, \nand you can edit and reload source files from x and y to your \nheart's content. You don't even have to worry if the version \nnumbers correspond to what the main projects declare.\n\nWhen you are done and sure that it all works (yes, ``lein test`` \nalso respects hot projects), just turn Hotsauce off \nagain, and bump version numbers, check in etc. as you would do normally.\n\n## Install\n\nI recommend making Hotsauce available for all of your projects.\n\nIf you have no `~/.lein/profiles.clj` file, you could just create one \nand give it this content:\n\n```clojure\n{:user {:plugins [[hotsauce \"0.1.6-SNAPSHOT\"]] }}\n```\n\n\u003e If you already have a ~/.lein/profiles.clj file, you will\n  \u003cbr\u003eneed to add `[hotsauce \"0.1.6-SNAPSHOT\"]` to the `:plugins` vector.\n\n## Good news if you work in a team\nUsing Hotsauce can be an individual decision that impacts nobody else. \n\n\u003e But if you want to make life extra easy for team members, you might \n  want to include the Hotsauce plugin in the project.clj of your main projects, \n  so it will be automatically available for everybody.\n  \u003cbr\u003eJust add `[hotsauce \"0.1.6-SNAPSHOT\"]` to the `:plugins` vector inside ``defproject`` in ``project.clj``\n\n## Want to know more?\nActually, what you have read so far on this page should be \nenough to get you going.\n  \nHowever, here's a bit more:\n  \n  * [List of subcommands](/doc/SUBCOMMANDS.md)\n  * [Tutorial - yet to be written](/doc/TUTORIAL.md)\n\n## Project status\nHotsauce is spicey, but still in beta.\n\u003cbr\u003eI would expect some issues could arise with profiles and with ClojureScript.\n\nIn my experience, when I use figwheel for web development, I often have to hard \nreload a ClojureScript application in Chrome after I change Hotsauce on/off \nor dependencies hot/cold.\n \nThis seems to be a problem with figwheel, as the js-code is being correctly generated. \n\n## Contributors\n* *You name could go here*\n* *or maybe here...*\n\nPull requests are welcome.\n\nThanks to [Thomas Engelschmidt](https://github.com/zamaterian) for a good conversation about various development pain points, build tooling and the JVM CLASSPATH. Ultimately that led me to reshape some tooling ideas I had and to put together with this simple plugin.\n\nThanks to [Mikkel Gravgaard](https://github.com/grav) for early comments.\n\n## License\n\nCopyright © 2017 Mads Olsen\n\nDistributed under the Eclipse Public License version 1.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojureman%2Fhotsauce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclojureman%2Fhotsauce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclojureman%2Fhotsauce/lists"}