├── components
│ ├── company
│ │ ├── src
In all our examples thus far, we’ve shown source code stored in two directories: src and test.
Tools.deps supports splitting source and test code into several directories, as does poly.
We’ve only shown .clj files in our examples, but poly also recognizes .cljc files, which you can use to share code between Clojure and ClojureScript.
We’ll contrive an example of splitting source code over multiple directories by exploring two ways of storing .clj and .cljc files.
Imagine a company component that contains both .clj and .cljc files.
You can choose to store both types of files in the same src directory:
├── components
│ ├── company
│ │ ├── src
For this strategy, you’d configure the component’s deps.edn file like so:
{:paths ["src"]
....
An alternative is to store the source code in two separate directories:
├── components
│ ├── company
│ │ ├── clj
│ │ ├── cljc
And configure :paths in the component’s deps.edn file as:
{:paths ["clj" "cljc"]
....
Some prefer this scheme, as it clearly shows where all the .cljc code resides.
We are not recommending one strategy over the other.
Our focus is to illustrate splitting source code over multiple paths.
The resources directory stores non-source files, e.g., images or data, and lives in bricks and, optionally, projects.
To keep resource paths unique on the classpath, poly creates a sub-directory under resources when creating a brick.
For components, the sub-directory name is the component’s interface name, and for bases, it’s the base name, e.g.:
├── bases
│ ├── worker
│ │ ├── resources
│ │ │ └── worker
│ │ │ └── mydata.edn
├── components
│ ├── creator
│ │ ├── resources
│ │ │ └── creator (1)
│ │ │ └── logo.png
| 1 | By default, the interface names match component names |
If you have resource files that are only used in the test context, then they can be put in a test-resources directory.
Starting with version 0.3.0, the poly tool also supports ClojureScript.
To have the tool read .cljs files, add "cljs" to the :dialects vector in workspace.edn:
| Dialects | Description |
|---|---|
| The tool reads files ending with |
| The tool reads files ending with |
| The tool reads files ending with |
To list the dialects used in bricks and projects (including their bricks), provide the :dialect argument to the info command:
poly info :dialect
This example was taken from the RealWorld example app, cljs-frontend branch, that mixes Clojure and ClojureScript.
Can you improve this documentation? These fine people already did:
Joakim Tengstrand & Furkan BayraktarEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |