lud

lud

Hi,

I need to create modules (predefined Struct based on a JSON schema). To help compiling those modules, I will write a MyCompiler module to provide macros, logics, checks, etc.

But I would like this MyCompiler module not to be compiled itself. Actually I would like to skip producing a beam file for this particular module, so when my code is used (as a dependency) the compiler is not available.

Thank you

Showing Posts 1 to 10

kip

kip

ex_cldr Core Team

The approach I take for not including some modules in a dependency is this:

  1. Create a directory my_app/dev so that there is now my_app/lib and my_app/dev.
  2. Add the code for the modules I don’t want to publish in the my_app/dev directory
  3. In mix.exs adjust compiler paths to include my_app/dev
  4. In the package/0 function in mix.exs, don’t include the my_app/dev directory in the package so the code never makes it to hex.pm
lud

lud OP

I guess it would not work in my case because those modules are required to compile the regular modules.

ityonemo

ityonemo

As far as I can tell this is not supported at the module-level granularity in elixir (I have been begging for this feature). There may be a way to do it with some trickery. If you need something like this you can only do it at the package/deps level by flagging a package as runtime: false.

kip

kip

ex_cldr Core Team

That’s my understanding too. I would also like to have “compile time” modules - but the only alternative I’m aware of would be to delete the “compile time only” beam files after compilation and that definitely seems like a recipe for future disaster.

ityonemo

ityonemo

I can’t even find an “after compilation” hook lol what is this peasant programming language :rofl:

kip

kip

ex_cldr Core Team

You could write your own “compiler” and add it to the end of the compiler chain and use it to clean things up. It just doesn’t feel very clean though.

ityonemo

ityonemo

Oh damn, thanks for the tip

hauleth

hauleth

It will require that part of the code to be a library (been there) so you can make your compile-time-only module part of such library and then mark it as runtime: false which will make it to not be included in release (still required as a dependency though).

kip

kip

ex_cldr Core Team

Ahh, thats a neat trick. So to confirm: a dependency marked runtime: false is not included in the release package at all? Thats sounds a solid approach with the work being required by the dependency author and not the library consumer (as it should be).

hauleth

hauleth

Unless it will be specified in :included_applications then it will be fully omitted in the release. However it will still be available for downstream users during their compilation time, the also will be able to opt-in to include that into their release.

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
water
I’m aware of 2 such projects, are there others? git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
itzmidinesh
Hi all, I’m working on a Phoenix project where I need to make external HTTP requests and I’m trying to choose between Req and HTTPoison....
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
leoschweizer
Hi, we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
csmr
Hi all, I’m new here and would like to hear peoples views on my Elixir/Phoenix based game-engine! :smiley: Mutonex gamedesign was finish...
New
Stef-Verniers
Hello I’ve been coding in Elixir for almost two years now because of my current job where we implemented Elixir in our application. But ...
New

Other Trending Topics Top

dominicletz
Hey there, I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first. ...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews