Dans mes projets impliquant Elixir, j'ai souvent des choses que je veux ajouter à mon fichier mix.exs
par exemple en ajoutant mes propres ENV
etc Il est généralement difficile d'ajouter ces éléments et de les ajouter à mes .gitignore
. Ma question est, est-il possible d'avoir quelque chose comme custom_mix.exs
que je peux appeler de mix
où je peux mettre dans tous mes paramètres personnalisés qui écrasera les paramètres qui sont définis dans mix.exs
? Le fichier custom_mix.exs
ne sera pas mis sous git et peut être mis en permanence sous .gitignore
et mix.exs
ne fera pas d'erreur si aucun custom_mix.exs
n'est trouvé.Est-il possible d'avoir un fichier de mélange personnalisé pour Elixir?
Répondre
Oui, très facile à faire. Ajouter ce qui suit au sommet de votre fichier mix.exs
if File.exists?("./custom_mix.exs"), do: Code.require_file("./custom_mix.exs", __DIR__)
defmodule MyApp.Mixfile do
# ...
if function_exported?(CustomMix, :some_stuff, 0),
do: CustomMix.some_stuff()
end
Ensuite, créez votre custom_mix.exs fichier comme ceci:
defmodule CustomMix do
def some_stuff do
#
end
end
Alors que la réponse par Steve Pallen est tout à fait correct, vous êtes en train de faire c'est faux en premier lieu. Cela ressemble vraiment à un X/Y problem.
Pourquoi mettriez-vous paramètres dans le fichier mix.exs
, alors que vous avez config/config.exs
à cet effet particulier? config.exs
a un support intégré pour ce que vous cherchez hors de la boîte, vérifiez comment. phoenix-framework fait différentes configurations pour différents environnements.
mix.exs
Le fichier est destiné à spécifier le comportement général de l'application et ce que vous essayez d'obtenir est que le comportement de l'application soit indéterminé.
Le problème possible, vous pouvez essayer de résoudre cette façon, que je pouvais penser, est de versionnage applications dépendantes ou de faire une mosaïque sur le code mix.exs
externe. Pourtant, l'approche pour s'attaquer et se battre contre le fichier de projet de l'élixir de base est une mauvaise idée. Vous pouvez créer un wrapper pour le fichier original mix.exs
, en appelant ses fonctions à partir de votre version et en forçant Elixir à utiliser votre version avec certains wrappers de shell, ou similaire.
Est-il possible de réaliser un ensemble séparé d'exigences dites quelque chose comme des dépendances pour les projets mais je veux seulement les avoir pour ma propre config dire ': lowks' ->' {: bypass, "~> 0.6", seulement: [: lowks,: test,: wercker]} '? –
Tout est possible. Maintenant, je suis sûr que c'est un problème X/Y. Si la dépendance est _a dependency_, vous ne pouvez pas la jeter pour vos utilisateurs. Si c'est le vôtre, private etc, alors oui (l'option 'only:' est là pour spécifier _environments_.) Vous êtes les bienvenus, faites ce qui précède et exécutez 'MIX_ENV = lowks iex -S mix'. – mudasobwa
suis d'accord avec @mudasobwa Je ne comprends toujours pas pourquoi tu voudrais faire ça. La seule chose que je ferai dans mix.exs si je bascule une dépendance entre le chemin local et hex/github quand je travaille sur la dépendance. Ensuite, je viens de commenter les lignes de deux lignes et de supprimer la version du chemin local lorsque je publie. –
Cela ne provoquera pas de 'mix' à bombarder si' custom_mix.exs' n'est pas trouvé correctement? –
a mis à jour ma réponse –