![](/img/trans.png)
[英]Can one package name be used for apps targeting different versions of Android?
[英]Can I use different versions of a package for different environments?
我有一個項目,我需要在本地環境中使用 SQLite,但在普通服務器上使用 Postgres。
不幸的是,目前還沒有用於 Ecto 3 的 SQLite 適配器,迫使我將 Ecto 和一些相關包保留在2.x
,這導致了一些問題,例如: Ecto 2.0 SQL Sandbox Error on testing
我想知道是否可以指定兩個不同版本的 Ecto 以及環境的依賴關系:local
和:prod
。 目前這似乎是不可能的,因為每個項目只有一個鎖文件。 實現它的唯一方法似乎是在項目目錄中存儲兩個不同的鎖文件? 例如https://elixirforum.com/t/only-fetch-deps-compatible-for-a-specific-version-of-elixir/16213
我還沒有深入嘗試過,但也許像這樣更改 mix.exs 文件會有所幫助:
defmodule YourProject.MixProject do
use Mix.Project
def project do
[
app: :your_project,
version: "0.1.0",
elixir: "~> 1.7",
start_permanent: Mix.env() == :prod,
deps: deps(Mix.env()),
lockfile: lockfile(Mix.env())
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
defp lockfile(:local), do: "mix-local.lock"
defp lockfile(_), do: "mix.lock"
# Run "mix help deps" to learn about dependencies.
defp deps(:local) do
[{:ecto, "~> 2.0"}]
end
defp deps(_) do
[{:ecto, "~> 3.0"}]
end
end
:local
環境的 lockfile 和 deps 是不同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.