| CARGO-TREE(1) | General Commands Manual | CARGO-TREE(1) |
نام (NAME)
cargo-tree - نمایش ساختار درختی گراف وابستگیها
خلاصه دستور (SYNOPSIS)
cargo tree [options]
توضیحات (DESCRIPTION)
این دستور درختی از وابستگیها را در ترمینال نمایش میدهد. نمونهای از یک پروژهٔ ساده که به بستهٔ “rand” وابسته است:
myproject v0.1.0 (/myproject)
`-- rand v0.7.3
|-- getrandom v0.1.14
| |-- cfg-if v0.1.10
| `-- libc v0.2.68
|-- libc v0.2.68 (*)
|-- rand_chacha v0.2.2
| |-- ppv-lite86 v0.2.6
| `-- rand_core v0.5.1
| `-- getrandom v0.1.14 (*)
`-- rand_core v0.5.1 (*)
[build-dependencies]
`-- cc v1.0.50
بستههایی که با (*) علامتگذاری شدهاند “تکرارزدایی” شدهاند. وابستگیهای این بسته پیشتر در جای دیگری از گراف نشان داده شدهاند و به همین دلیل تکرار نمیشوند. برای تکرار موارد مشابه، از گزینهٔ --no-dedupe استفاده کنید.
پرچم -e میتواند برای انتخاب انواع وابستگی جهت نمایش به کار رود. نوع “features” خروجی را تغییر میدهد تا ویژگیهای فعالشده توسط هر وابستگی را نمایش دهد. برای مثال، cargo tree -e features:
myproject v0.1.0 (/myproject)
`-- log feature "serde"
`-- log v0.4.8
|-- serde v1.0.106
`-- cfg-if feature "default"
`-- cfg-if v0.1.10
در این درخت، myproject با ویژگی serde به log وابسته است. log نیز به نوبهٔ خود با ویژگیهای پیشفرض (“default”) به cfg-if وابسته است. هنگام استفاده از -e features، استفاده از پرچم -i برای نمایش چگونگی جریان یافتن ویژگیها به درون یک بسته میتواند مفید باشد. برای جزئیات بیشتر مثالهای زیر را ببینید.
یکپارچهسازی ویژگیها (Feature Unification)
این دستور گرافی را نشان میدهد که بسیار نزدیکتر به گراف یکپارچهشده از نظر ویژگیها است که توسط Cargo ساخته خواهد شد، نه صرفاً آنچه در Cargo.toml فهرست کردهاید. برای نمونه، اگر وابستگی یکسانی را هم در [dependencies] و هم در [dev-dependencies] مشخص کرده باشید اما با ویژگیهای فعال متفاوت، این دستور ممکن است همهٔ ویژگیها را ادغام کرده و یک (*) را روی یکی از وابستگیها برای مشخص کردن مورد تکراری نمایش دهد.
در نتیجه، برای یک نمای کلی تقریباً معادل با آنچه cargo build انجام میدهد، دستور cargo tree -e normal,build بسیار نزدیک است؛ برای یک نمای کلی تقریباً معادل با آنچه cargo test انجام میدهد، cargo tree بسیار نزدیک است. با این حال، تطابق دقیق با آنچه Cargo قرار است بسازد تضمین نمیشود، چرا که فرایند کامپایل پیچیده است و به عوامل متعدد گوناگونی بستگی دارد.
برای کسب اطلاعات بیشتر دربارهٔ یکپارچهسازی ویژگیها، این بخش اختصاصی https://doc.rust-lang.org/cargo/reference/features.html#feature-unification را بررسی کنید.
گزینهها (OPTIONS)
گزینههای درخت (Tree Options)
-i spec, --invert spec
توجه داشته باشید که در یک فضای کاری (workspace)، بهطور پیشفرض تنها وابستگیهای معکوس بسته درون درخت عضوی از فضای کاری که در دایرکتوری جاری قرار دارد نمایش داده میشوند. از پرچم --workspace میتوان برای گسترش آن استفاده کرد تا وابستگیهای معکوس بسته را در کل فضای کاری نمایش دهد. از پرچم -p میتوان برای نمایش وابستگیهای معکوس بسته تنها در زیردرخت بستهٔ ارائهشده به -p استفاده کرد.
--prune spec
--depth depth
اگر مقدار دادهشده workspace باشد، در عوض تنها وابستگیهایی را نشان میدهد که عضو فضای کاری جاری هستند.
--no-dedupe
-d, --duplicates
برای کاهش زمان ساخت و اندازهٔ فایلهای اجرایی، اجتناب از ساخت چندبارهٔ همان بسته میتواند مفید باشد. این پرچم میتواند به شناسایی بستههای مشکلساز کمک کند. سپس میتوانید بررسی کنید که آیا بستهٔ وابسته به نسخهٔ قدیمیتر میتواند به نسخهٔ جدیدتر بهروزرسانی شود تا تنها یک نمونه ساخته شود یا خیر.
-e kinds, --edges kinds
انواع وابستگی normal، build، dev و all را نمیتوان با انواع وابستگی no-normal، no-build یا no-dev ترکیب کرد.
پیشفرض normal,build,dev است.
--target triple
--charset charset
-f format, --format format
این یک رشته دلخواه است که برای نمایش هر بسته استفاده خواهد شد. رشتههای زیر با مقدار متناظر خود جایگزین میشوند:
--prefix prefix
انتخاب بسته (Package Selection)
بهطور پیشفرض، هنگامی که هیچ گزینهای برای انتخاب بسته مشخص نشده باشد، بستههای انتخابشده به فایل مانیفست انتخابشده بستگی دارند (بر اساس دایرکتوری کاری فعلی در صورتی که --manifest-path داده نشده باشد). اگر مانیفست ریشه یک فضای کاری (workspace) باشد، اعضای پیشفرض فضای کاری انتخاب میشوند، در غیر این صورت تنها بستهای که توسط مانیفست تعریف شده است انتخاب خواهد شد.
اعضای پیشفرض یک فضای کاری را میتوان بهصراحت با کلید workspace.default-members در مانیفست ریشه تعیین کرد. در صورت عدم تنظیم، یک فضای کاری مجازی شامل تمام اعضای فضای کاری خواهد بود (معادل ارسال --workspace)، و یک فضای کاری غیرمجازی تنها شامل خود crate ریشه خواهد بود.
-p spec…, --package spec…
--workspace
--exclude SPEC…
گزینههای مانیفست (Manifest Options)
--manifest-path path
--locked
میتوان از این گزینه در محیطهایی که ساختهای قطعی و تکرارپذیر مورد نظر است، مانند خطوط لوله CI استفاده کرد.
--offline
توجه داشته باشید که این کار ممکن است منجر به تفکیک وابستگی متفاوتی نسبت به حالت برخط شود. Cargo تنها خود را به crateهایی که به صورت محلی بارگیری شدهاند محدود میکند، حتی اگر طبق نسخه محلی شاخص، نسخه جدیدتری وجود داشته باشد. برای بارگیری وابستگیها پیش از رفتن به حالت آفلاین، دستور cargo-fetch(1) را ببینید.
همچنین میتواند با مقدار پیکربندی net.offline در https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.
--frozen
برای جزئیات بیشتر، مستندات ویژگیها https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options را ببینید.
-F features, --features features
--all-features
--no-default-features
گزینههای نمایش (Display Options)
-v, --verbose
-q, --quiet
--color when
همچنین میتواند با مقدار پیکربندی term.color https://doc.rust-lang.org/cargo/reference/config.html تعیین شود.
گزینههای عمومی (Common Options)
+toolchain
--config KEY=VALUE یا PATH
-C PATH
این گزینه فقط در کانال nightly https://doc.rust-lang.org/book/appendix-07-nightly-rust.html در دسترس است و برای فعالسازی به پرچم -Z unstable-options نیاز دارد (به #10098 https://github.com/rust-lang/cargo/issues/10098 مراجعه کنید).
-h, --help
-Z flag
محیط (ENVIRONMENT)
برای جزئیات درباره متغیرهای محیطی که Cargo میخواند، به مرجع https://doc.rust-lang.org/cargo/reference/environment-variables.html مراجعه کنید.
وضعیت خروج (EXIT STATUS)
مثالها (EXAMPLES)
cargo tree
cargo tree -i syn
cargo tree --format "{p} {f}"
cargo tree -d
cargo tree -e features -i syn
پرچم -e features برای نمایش ویژگیها استفاده میشود. پرچم -i برای معکوس کردن گراف استفاده میشود تا بستههایی را که به syn وابستگی دارند نمایش دهد. نمونهای از آنچه نمایش داده خواهد شد:
syn v1.0.17
|-- syn feature "clone-impls"
| `-- syn feature "default"
| `-- rustversion v1.0.2
| `-- rustversion feature "default"
| `-- myproject v0.1.0 (/myproject)
| `-- myproject feature "default" (command-line)
|-- syn feature "default" (*)
|-- syn feature "derive"
| `-- syn feature "default" (*)
|-- syn feature "full"
| `-- rustversion v1.0.2 (*)
|-- syn feature "parsing"
| `-- syn feature "default" (*)
|-- syn feature "printing"
| `-- syn feature "default" (*)
|-- syn feature "proc-macro"
| `-- syn feature "default" (*)
`-- syn feature "quote"
|-- syn feature "printing" (*)
`-- syn feature "proc-macro" (*)
برای خواندن این گراف، میتوانید زنجیره را برای هر ویژگی از ریشه دنبال کنید تا ببینید چرا گنجانده شده است. برای مثال، ویژگی “full” توسط کریت rustversion اضافه شده است که خود از myproject (با ویژگیهای پیشفرض) گنجانده شده، و myproject بستهای است که در خط فرمان انتخاب شده است. تمامی ویژگیهای دیگر syn توسط ویژگی “default” اضافه شدهاند (“quote” توسط “printing” و “proc-macro” اضافه شده است که هر دوی آنها جزو ویژگیهای پیشفرض هستند).
اگر در ارجاع متقابل ورودیهای تکرارزداییشدهٔ (*) با مشکل مواجه شدید، پرچم --no-dedupe را امتحان کنید تا خروجی کامل را دریافت نمایید. cargo(1), cargo-metadata(1)