Elixir 1.7

Mix.Project




elixir

Mix.Project

मिक्स परियोजनाओं को परिभाषित और हेरफेर करता है।

एक मिक्स प्रोजेक्ट को मिक्स में कॉल use Mix.Project द्वारा परिभाषित किया जाता है, जिसे आमतौर पर mix.exs में रखा जाता है:

defmodule MyApp.MixProject do
  use Mix.Project

  def project do
    [
      app: :my_app,
      version: "1.0.0"
    ]
  end
end

विन्यास

मिक्स को कॉन्फ़िगर करने के लिए, मॉड्यूल जो मिक्स मिक्स का use किसी भी project/0 उस project/0 फ़ंक्शन का निर्यात करना चाहिए जो project/0 लिए कॉन्फ़िगरेशन का प्रतिनिधित्व करने वाली कीवर्ड सूची देता है।

यह कॉन्फ़िगरेशन Mix.Project.config/0 का उपयोग करके पढ़ा जा सकता है। ध्यान दें कि यदि कोई प्रोजेक्ट परिभाषित नहीं है, तो config/0 विफल नहीं होगा; यह कई मिक्स कार्यों को बिना प्रोजेक्ट के काम करने की अनुमति देता है।

यदि किसी कार्य को परिभाषित करने के लिए किसी प्रोजेक्ट की आवश्यकता होती है या प्रोजेक्ट के भीतर किसी विशेष फ़ंक्शन को एक्सेस करने की आवश्यकता होती है, तो कार्य Mix.Project.get!/0 को कॉल कर सकता है Mix.Project.get!/0 जो कि Mix.NoProjectError साथ विफल हो Mix.NoProjectError है। कोई परियोजना के परिभाषित नहीं होने की स्थिति में।

उन सभी विकल्पों की एक व्यापक सूची नहीं है जिन्हें project/0 द्वारा वापस किया जा सकता है क्योंकि कई मिक्स कार्य अपने स्वयं के विकल्पों को परिभाषित करते हैं जो वे इस कॉन्फ़िगरेशन से पढ़ते हैं। उदाहरण के लिए, Mix.Tasks.Compile कार्य के लिए दस्तावेज़ में "कॉन्फ़िगरेशन" अनुभाग देखें।

ये कुछ विकल्प हैं जो केवल एक मिक्स कार्य द्वारा उपयोग नहीं किए जाते हैं (और इस तरह यहां दस्तावेज किए जाएंगे):

  • :build_per_environment - यदि true , तो प्रति-वातावरण निर्मित होगा । यदि false , तो बिल्ड मिक्स वातावरण की परवाह किए बिना _build/shared में जाएगा। true अवहेलना।

  • :aliases - कार्य उपनामों की एक सूची। अधिक जानकारी के लिए, Mix मॉड्यूल के लिए प्रलेखन में "एलियासेस" अनुभाग देखें। चूक []

  • :config_path - मुख्य कॉन्फ़िगरेशन फ़ाइल के पथ का प्रतिनिधित्व करने वाली एक स्ट्रिंग। अधिक जानकारी के लिए config_files/0 देखें। डिफ़ॉल्ट "config/config.exs"

  • :default_task - जब कोई कार्य निर्दिष्ट नहीं किया जाता है तो mix द्वारा चलाए जाने वाले डिफ़ॉल्ट कार्य का प्रतिनिधित्व करने वाला एक स्ट्रिंग। "run" करने के लिए चूक।

  • :deps - इस परियोजना की निर्भरता की एक सूची। अधिक जानकारी के लिए Mix.Tasks.Deps कार्य के लिए दस्तावेज़ देखें। चूक []

  • :deps_path - निर्देशिका जहां निर्भरता संग्रहीत की जाती है। इसके अलावा deps_path/1 देखें। "deps" लिए चूक।

  • :lockfile - mix deps.* द्वारा उपयोग किए जाने वाले mix deps.* कार्यों का परिवार। "mix.lock" लिए चूक।

  • :preferred_cli_env - {task, env} की एक सूची {task, env} tuples जहाँ task एक परमाणु के रूप में कार्य का नाम है (उदाहरण के लिए :"deps.get" ) और env पसंदीदा वातावरण है (उदाहरण के लिए :test )। यह विकल्प @preferred_cli_env विशेषता के साथ कार्यों द्वारा निर्दिष्ट ओवरराइड करता है ( Mix.Task लिए डॉक्स देखें)। चूक []

अधिक विकल्पों के लिए, एकल मिक्स कार्यों के लिए प्रलेखन पर नज़र रखें; अच्छे उदाहरण हैं। Mix.Tasks.Compile टास्क। Mix.Tasks.Compile टास्क और सभी विशिष्ट कंपाइलर टास्क (जैसे Mix.Tasks.Compile.Erlang Mix.Tasks.Compile.Erlang Mix.Tasks.Compile.Elixir या Mix.Tasks.Compile.Erlang )।

ध्यान दें कि कभी-कभी विभिन्न कार्यों के लिए प्रलेखन में एक ही कॉन्फ़िगरेशन विकल्प का उल्लेख किया जाता है; यह सिर्फ इसलिए है क्योंकि यह एक ही कॉन्फ़िगरेशन विकल्प को पढ़ने और उपयोग करने के लिए कई कार्यों के लिए सामान्य है (उदाहरण के लिए :erlc_paths का उपयोग mix compile.erlang , mix compile.yecc mix compile.yecc , और अन्य कार्यों) द्वारा किया जाता है।

एर्लांग परियोजनाएं

मिक्स का उपयोग एरलंग परियोजनाओं को प्रबंधित करने के लिए किया जा सकता है जिनके पास कोई अमृत कोड नहीं है। एर्लैंग परियोजना के लिए मिक्स कार्यों को सही ढंग से काम करने के लिए, language: :erlang को project/0 द्वारा लौटाए गए कॉन्फ़िगरेशन का हिस्सा होना चाहिए। यह सेटिंग यह भी सुनिश्चित करती है कि अमृत उत्पन्न .app फ़ाइल के लिए निर्भरता के रूप में या mix escript.build साथ उत्पन्न mix escript.build जोड़ा नहीं गया है, और इसी तरह।

सारांश

कार्य

app_path (config \\ config ())

बिल्ड के अंदर अनुप्रयोग पथ देता है

apps_paths (config \\ config ())

छाता बच्चे के आवेदन पथ के साथ एक नक्शा देता है

build_path (config \\ config ())

दिए गए प्रोजेक्ट के लिए बिल्ड पथ देता है

build_structure (config \\ config (), opts \\ [])

दिए गए आवेदन के लिए प्रोजेक्ट संरचना बनाता है

clear_deps_cache()

वर्तमान परिवेश के लिए निर्भरता को समाप्त करता है

संकलित करें (args, config \\ [])

दिए गए प्रोजेक्ट को संकलित करता है

compile_path (config \\ config ())

दिए गए प्रोजेक्ट के पथ संकलित करता है

config/0

प्रोजेक्ट कॉन्फ़िगरेशन देता है

config_files/0

इस प्रोजेक्ट के लिए प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइलों की सूची लौटाता है

config_mtime()

कॉन्फ़िगरेशन फ़ाइलों से नवीनतम संशोधन समय देता है

समेकन_पथ (config \\ config ())

वह पथ लौटाता है जहाँ प्रोटोकॉल समेकन संग्रहीत होते हैं

deps_path/1

उस पथ को लौटाता है जहां दी गई परियोजना के लिए निर्भरताएं संग्रहीत होती हैं

deps_paths()

नक्शे के रूप में सभी निर्भरताओं का पूरा रास्ता लौटाता है

सुनिश्चित करें_स्ट्रक्चर (config \\ config (), opts \\ [])

दिए गए प्रोजेक्ट के लिए प्रोजेक्ट संरचना सुनिश्चित करता है

get!()

जैसे ही get/0 , लेकिन वर्तमान परियोजना नहीं होने पर एक अपवाद को जन्म देता है

get/0

एक होने पर वर्तमान परियोजना को पुनः प्राप्त करता है

in_project (ऐप, पथ, पोस्ट_कॉन्फ़िग \\ [], मज़ा)

दिए गए प्रोजेक्ट के अंदर दिए गए fun को रन करता है

load_paths (config \\ config ())

दिए गए प्रोजेक्ट के लिए सभी लोड पथ लौटाता है

मैनिफ़ेस्ट_पथ (config \\ config ())

वह पथ लौटाता है जहाँ मेनिफ़ेस्ट संग्रहीत हैं

छाता (config \\ config ())

यदि कोई छाता प्रोजेक्ट के लिए कॉन्फ़िगरेशन कॉन्फ़िगरेशन है तो true है

कार्य

app_path (config \\ config ())

app_path(keyword()) :: Path.t()

बिल्ड के अंदर अनुप्रयोग पथ देता है।

लौटे रास्ते का विस्तार किया जाएगा।

उदाहरण

Mix.Project.app_path()
#=> "/path/to/project/_build/shared/lib/app"

apps_paths (config \\ config ()) (1.4.0 से)

छाता बच्चे के आवेदन पथ के साथ एक नक्शा देता है।

ये रास्ते :apps_path और :apps कॉन्फ़िगरेशन पर आधारित हैं।

यदि दिए गए प्रोजेक्ट कॉन्फ़िगरेशन एक छाता प्रोजेक्ट की पहचान करता है, तो रिटर्न वैल्यू app => path का एक मानचित्र है जहां app छाता का एक बच्चा ऐप है और छाता प्रोजेक्ट के रूट के सापेक्ष पथ इसका पथ है।

यदि दिए गए प्रोजेक्ट कॉन्फ़िगरेशन एक छाता प्रोजेक्ट की पहचान नहीं करता है, तो nil को वापस कर दिया जाता है।

उदाहरण

Mix.Project.apps_paths()
#=> %{my_app1: "apps/my_app1", my_app2: "apps/my_app2"}

build_path (config \\ config ())

build_path(keyword()) :: Path.t()

दिए गए प्रोजेक्ट के लिए बिल्ड पथ देता है।

यदि कोई कॉन्फ़िगरेशन नहीं दिया गया है, तो वर्तमान प्रोजेक्ट के लिए उपयोग किया जाता है।

लौटे रास्ते का विस्तार किया जाएगा।

उदाहरण

Mix.Project.build_path()
#=> "/path/to/project/_build/shared"

यदि :build_per_environment सही पर सेट true , तो यह प्रति वातावरण एक नया बिल्ड बनाएगा:

Mix.env()
#=> :dev
Mix.Project.build_path()
#=> "/path/to/project/_build/dev"

build_structure (config \\ config (), opts \\ [])

build_structure(keyword(), keyword()) :: :ok

दिए गए आवेदन के लिए प्रोजेक्ट संरचना बनाता है।

विकल्प

  • :symlink_ebin - इसे कॉपी करने के बजाए symlink ebin

clear_deps_cache () (1.7.0 से)

clear_deps_cache() :: :ok

वर्तमान परिवेश के लिए निर्भरता को समाप्त करता है।

उपयोगी जब वैश्विक स्थिति के परिवर्तन के कारण निर्भरता को फिर से लोड करने की आवश्यकता होती है।

संकलित करें (args, config \\ [])

compile([term()], keyword()) :: term()

दिए गए प्रोजेक्ट को संकलित करता है।

compile_path (config \\ config ())

compile_path(keyword()) :: Path.t()

दिए गए प्रोजेक्ट के पथ संकलित करता है।

यदि कोई कॉन्फ़िगरेशन नहीं दिया गया है, तो वर्तमान परियोजना के लिए एक का उपयोग किया जाएगा।

लौटे रास्ते का विस्तार किया जाएगा।

उदाहरण

Mix.Project.compile_path()
#=> "/path/to/project/_build/dev/lib/app/ebin"

config ()

config() :: keyword()

प्रोजेक्ट कॉन्फ़िगरेशन देता है।

यदि कोई परियोजना परिभाषित नहीं है, तो यह अभी भी डिफ़ॉल्ट मानों के साथ एक कीवर्ड सूची देता है। यह कई मिक्स कार्यों को एक अंतर्निहित परियोजना की आवश्यकता के बिना काम करने की अनुमति देता है।

ध्यान दें कि इस परियोजना को स्टैक पर धकेलने के बाद यह कॉन्फ़िगरेशन कैश किया जाता है। इसे कई बार कॉल करने से यह पुन: प्रतिष्ठित नहीं होगा।

रनटाइम कॉन्फ़िगरेशन खोजने के लिए Mix.Project.config/0 का उपयोग न करें। इसका उपयोग केवल अपनी परियोजना के पहलुओं (जैसे संकलन निर्देशिका) को कॉन्फ़िगर करने के लिए करें न कि आपके एप्लिकेशन रनटाइम के लिए।

config_files ()

config_files() :: [Path.t()]

इस प्रोजेक्ट के लिए प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइलों की सूची लौटाता है।

जब भी इस तरह की कॉन्फ़िगरेशन फाइलें बदलती हैं, तो यह फ़ंक्शन आमतौर पर एक पूर्ण पुनर्संयोजन को ट्रिगर करने के संकलन कार्यों में उपयोग किया जाता है।

यह mix.exs फाइल, लॉक मेनिफ़ेस्ट, और सभी mix.exs को mix.exs लौटाता है जो एक ट्रेलिंग पीरियड (उदाहरण के लिए, .my_config.exs ) से शुरू नहीं होता है।

config_mtime () (1.7.0 से)

config_mtime() :: posix_mtime when posix_mtime: integer()

कॉन्फ़िगरेशन फ़ाइलों से नवीनतम संशोधन समय देता है।

जब भी इस तरह की कॉन्फ़िगरेशन फाइलें बदलती हैं, तो यह फ़ंक्शन आमतौर पर एक पूर्ण पुनर्संयोजन को ट्रिगर करने के लिए संकलन कार्यों में उपयोग किया जाता है। इस कारण से, फ़ाइल सिस्टम लुकअप से बचने के लिए माइम को कैश किया गया है।

समेकन_पथ (config \\ config ())

वह पथ लौटाता है जहाँ प्रोटोकॉल समेकन संग्रहीत होते हैं।

लौटे रास्ते का विस्तार किया जाएगा।

उदाहरण

Mix.Project.consolidation_path()
#=> "/path/to/project/_build/dev/lib/my_app/consolidated"

छाते के अंदर:

Mix.Project.consolidation_path()
#=> "/path/to/project/_build/dev/consolidated"

deps_path (config \\ config ())

deps_path(keyword()) :: Path.t()

उस पथ को लौटाता है जहां दी गई परियोजना के लिए निर्भरताएं संग्रहीत की जाती हैं।

यदि कोई कॉन्फ़िगरेशन नहीं दिया गया है, तो वर्तमान प्रोजेक्ट के लिए उपयोग किया जाता है।

लौटे रास्ते का विस्तार किया जाएगा।

उदाहरण

Mix.Project.deps_path()
#=> "/path/to/project/deps"

deps_paths ()

deps_paths() :: %{optional(atom()) => Path.t()}

नक्शे के रूप में सभी निर्भरताओं का पूरा रास्ता लौटाता है।

उदाहरण

Mix.Project.deps_paths()
#=> %{foo: "deps/foo", bar: "custom/path/dep"}

सुनिश्चित करें_स्ट्रक्चर (config \\ config (), opts \\ [])

ensure_structure(keyword(), keyword()) :: :ok

दिए गए प्रोजेक्ट के लिए प्रोजेक्ट संरचना सुनिश्चित करता है।

मामले में यह मौजूद है, यह एक सेशन नहीं है। अन्यथा, यह बनाया गया है।

प्राप्त!()

get!() :: module() | no_return()

जैसे ही get/0 , लेकिन वर्तमान परियोजना नहीं होने पर एक अपवाद को जन्म देता है।

इसे आमतौर पर उन कार्यों द्वारा बुलाया जाता है जिन्हें परिभाषित करने के लिए परियोजना पर अतिरिक्त कार्यों की आवश्यकता होती है। चूँकि ऐसे कार्य आमतौर पर परिभाषित की जा रही परियोजना पर निर्भर करते हैं, यह फ़ंक्शन कोई प्रोजेक्ट उपलब्ध नहीं होने की स्थिति में Mix.NoProjectError अपवाद को उठाता है।

प्राप्त()

get() :: module() | nil

एक होने पर वर्तमान परियोजना को पुनः प्राप्त करता है।

यदि कोई वर्तमान परियोजना नहीं है, तो nil वापस कर दिया जाता है। यह उन मामलों में हो सकता है जिनमें वर्तमान निर्देशिका में कोई mix.exs नहीं है।

यदि आप किसी परियोजना को परिभाषित करने की उम्मीद करते हैं, अर्थात, यह वर्तमान कार्य की आवश्यकता है, तो आपको कॉल करना चाहिए get!() बजाय।

in_project (ऐप, पथ, पोस्ट_कॉन्फ़िग \\ [], मज़ा)

in_project(atom(), Path.t(), keyword(), (module() -> result)) :: result
when result: term()

दिए गए प्रोजेक्ट के अंदर दिए गए fun को रन करता है।

यह फ़ंक्शन वर्तमान कार्यशील निर्देशिका को बदलता है और दिए गए निर्देशिका में प्रोजेक्ट स्टैक पर प्रोजेक्ट लोड करता है।

एक post_config जा सकता है जिसे प्रोजेक्ट कॉन्फ़िगरेशन में मर्ज किया जाएगा।

fun को दिए गए Mix.Project के मॉड्यूल नाम के साथ कहा जाता है। इस फंक्शन का रिटर्न वैल्यू fun का रिटर्न वैल्यू fun

उदाहरण

Mix.Project.in_project(:my_app, "/path/to/my_app", fn module ->
  "Mix project is: #{inspect module}"
end)
#=> "Mix project is: MyApp.MixProject"

load_paths (config \\ config ())

load_paths(keyword()) :: [Path.t()]

दिए गए प्रोजेक्ट के लिए सभी लोड पथ लौटाता है।

मैनिफ़ेस्ट_पथ (config \\ config ())

manifest_path(keyword()) :: Path.t()

वह पथ लौटाता है जहाँ मेनिफ़ेस्ट संग्रहीत हैं।

डिफ़ॉल्ट रूप से वे बिल्ड निर्देशिका के अंदर ऐप पथ में संग्रहीत होते हैं। छाता अनुप्रयोगों में निर्माण निर्देशिका के मूल में निर्धारित पथ होता है। भविष्य के रिलीज़ में निर्देशिकाएँ बदली जा सकती हैं।

लौटे रास्ते का विस्तार किया जाएगा।

उदाहरण

Mix.Project.manifest_path()
#=> "/path/to/project/_build/shared/lib/app/.mix"

छाता (config \\ config ())

यदि कोई छाता प्रोजेक्ट के लिए कॉन्फ़िगरेशन कॉन्फ़िगरेशन है तो true है।

जब बिना किसी तर्क के बुलाया जाता है, तो यह बताता है कि क्या वर्तमान परियोजना एक छाता परियोजना है।