DUB(1) The D Language Foundation DUB(1)

dub - سامانه مدیریت بسته و ساخت برای زبان D

dub [--version] [COMMAND] [OPTIONS...] -- [APPLICATION ARGUMENTS...]

پروژه DUB را در دایرکتوری جاری مدیریت می‌کند. DUB می‌تواند هم به عنوان یک سامانه ساخت و هم یک مدیر بسته عمل کند و به‌طور خودکار وابستگی‌های پروژه را پیگیری نماید - هم آن‌ها را دانلود کرده و هم به برنامه پیوند زند.

یک بسته خالی از نوع مشخص‌شده در دایرکتوری داده‌شده ایجاد می‌کند. به‌طور پیش‌فرض، از دایرکتوری کاری جاری استفاده می‌شود.

الگوهای سفارشی را می‌توان توسط بسته‌ها با ارائه یک زیربسته به نام «init-exec» تعریف کرد. در این حالت هیچ فایل منبع پیش‌فرضی اضافه نمی‌شود. زیربسته «init-exec» پس از ایجاد دایرکتوری پایه پروژه، در داخل دایرکتوری مقصد کامپایل و اجرا می‌شود. آرگومان‌های آزاد «dub init -t custom -- free args» به عنوان آرگومان‌های برنامه به زیربسته «init-exec» ارسال می‌شوند.

یک بسته را می‌سازد و اجرا می‌کند (به‌طور پیش‌فرض از بسته اصلی در دایرکتوری کاری جاری استفاده می‌کند).
یک بسته را می‌سازد (به‌طور پیش‌فرض از بسته اصلی در دایرکتوری کاری جاری استفاده می‌کند).
بسته را می‌سازد و تمام آزمون‌های واحد (unit tests) موجود را اجرا می‌کند.

اگر هیچ پیکربندی صریحی مشخص نشده باشد، یک پیکربندی موجود به نام «unittest» برای آزمایش ترجیح داده می‌شود. اگر وجود نداشته باشد، اولین پیکربندی از نوع کتابخانه استفاده خواهد شد، و اگر آن هم وجود نداشته باشد، اولین پیکربندی اجرایی انتخاب می‌شود.

هنگامی که یک فایل اصلی سفارشی (--main-file) مشخص شود، فقط می‌توان از پیکربندی‌های نوع کتابخانه استفاده کرد. در غیر این صورت، بسته به نوع پیکربندی انتخاب‌شده، یا از یک فایل اصلی موجود استفاده می‌شود (که باید به درستی تنظیم شده باشد تا فقط آزمون‌های واحد را برای 'version(unittest)' اجرا کند)، یا DUB یک فایل اصلی برای پیکربندی‌های نوع کتابخانه تولید خواهد کرد.

در نهایت، اگر بسته شامل وابستگی به بسته «tested» باشد، فایل اصلی که به‌طور خودکار تولید شده است از آن برای اجرای آزمون‌های واحد استفاده خواهد کرد.

بسته را می‌سازد و آزمون‌های لینتر D-Scanner را اجرا می‌کند.
فایل‌های پروژه را با استفاده از یکی از مولدهای پشتیبانی‌شده تولید می‌کند:

visuald - فایل‌های پروژه VisualD

sublimetext - فایل پروژه SublimeText

cmake - اسکریپت‌های ساخت CMake

build - بسته را مستقیماً می‌سازد

یک نام بسته اختیاری می‌تواند مشخص شود تا بسته‌ای غیر از بسته ریشه/دایرکتوری جاری تولید گردد.

یک توصیف ساخت JSON را برای بسته ریشه و تمام وابستگی‌های آن با قالبی مشابه فایل توصیف بسته JSON چاپ می‌کند. این قابلیت عمدتاً برای محیط‌های یکپارچه توسعه نرم‌افزار (IDE) مفید است.

تمام گزینه‌های معمولی که برای build/run/generate استفاده می‌شوند در اینجا نیز اعمال می‌گردند.

هنگامی که --data=VALUE مشخص شود، به جای آن تنظیمات ساخت خاص پروژه چاپ خواهد شد (به‌طور پیش‌فرض، قالب‌بندی‌شده برای کامپایلر جاری).

گزینهٔ --data=VALUE می‌تواند چندین بار مشخص شود تا چندین بخش از اطلاعات به یک‌باره بازیابی شوند. یک فهرست جداشده با کاما نیز قابل قبول است (مثال: --data=dflags,libs). داده‌ها به همان ترتیبی که در خط فرمان درخواست شده‌اند در خروجی نمایش داده خواهند شد.

مقادیر پذیرفته‌شده برای --data=VALUE عبارتند از:

main-source-file, dflags, lflags, libs, linker-files, source-files, versions, debug-versions, import-paths, string-import-paths, import-files, options

موارد زیر نیز در صورت استفاده از --data-list برای --data پذیرفته می‌شوند:

target-type, target-path, target-name, working-directory, copy-files, string-import-files, pre-generate-commands, post-generate-commands, pre-build-commands, post-build-commands, pre-run-commands, post-run-commands, requirements

این دستور هرگونه فایل ساخت ذخیره‌شده در حافظه پنهان بسته(های) مشخص‌شده را حذف می‌کند. فایل هدف نهایی و همچنین هرگونه copyFiles در حال حاضر حذف نمی‌شوند.

بدون آرگومان، بسته موجود در دایرکتوری کاری جاری پاک‌سازی خواهد شد.

این دستور از ابزار Dustmite برای جداسازی علت خطاهای ساخت در یک پروژه DUB استفاده می‌کند.

یک رونوشت از تمام بسته‌های درگیر ایجاد کرده و dustmite را روی این رونوشت اجرا می‌کند و یک نمونه آزمایشی کاهش‌یافته بر جای می‌گذارد.

تعیین شرایط خطای مورد نظر با بررسی کد وضعیت کامپایلر/پیونددهنده و همچنین خروجی آن‌ها (ترکیب stdout و stderr) انجام می‌شود. اگر --program-status یا --program-regex مشخص شده باشد و باینری تولیدشده یک فایل اجرایی باشد، اجرا شده و خروجی آن نیز در تصمیم نهایی لحاظ خواهد شد.

هنگامی که با یک یا چند آرگومان اجرا شود، بدون توجه به مکانی که در آن اجرا می‌شود، بسته‌های منطبق با آرگومان(ها) را دریافت می‌کند.

مثال‌ها:

$ dub fetch vibe-d

$ dub fetch vibe-d@v0.9.0 --cache=local --recursive

هنگامی که در یک پروژه بدون هیچ آرگومانی اجرا شود، تمام وابستگی‌های آن پروژه را دریافت می‌کند. اگر پروژه دارای وابستگی‌های تعیین‌شده نباشد (نبود «dub.selections.json»)، فرآیند حل وابستگی را نیز انجام می‌دهد.

مثال:

$ cd myProject && dub fetch

توجه داشته باشید که دستورهای «build» و «run» و هر دستور دیگری که به بسته‌ها نیاز دارد، به‌طور خودکار fetch را انجام می‌دهند؛ بنابراین به‌طور کلی نیازی به اجرای این دستور قبل از سایر دستورها نیست.

بسته‌های <packages> را به عنوان وابستگی اضافه می‌کند.

اجرای «dub add <package>» معادل اضافه کردن <package> به بخش «dependencies» در dub.json/dub.sdl است. اگر نسخه‌ای برای یکی از بسته‌ها مشخص نشده باشد، dub مخزن را برای یافتن آخرین نسخه بررسی می‌کند.

بسته‌ای را که در سامانه محلی ذخیره شده است حذف می‌کند.
تمام وابستگی‌های بسته را با پرس‌وجو از مخزن(های) بسته برای دریافت نسخه‌های جدید ارتقا می‌دهد.

این کار نسخه‌های ذخیره‌شده در فایل انتخاب‌ها (dub.selections.json) را به همین ترتیب به‌روزرسانی می‌کند.

اگر یک یا چند نام بسته مشخص شود، فقط همان وابستگی‌ها ارتقا خواهند یافت. در غیر این صورت، تمام وابستگی‌های مستقیم و غیرمستقیم بسته ریشه ارتقا می‌یابند.

یک مسیر جستجوی پیش‌فرض برای بسته‌ها اضافه می‌کند. تمام زیرپوشه‌های مستقیم این مسیر برای توصیف‌های بسته جستجو شده و به عنوان بسته در دسترس قرار خواهند گرفت. استفاده از این دستور اثری معادل فراخوانی دستی «dub add-local» روی تک‌تک زیرپوشه‌ها دارد.

هر بسته‌ای که با استفاده از add-path ثبت شود، هنگام جستجوی وابستگی‌ها در حین عملیات ساخت نسبت به بسته‌های دانلودشده از مخزن بسته در اولویت قرار خواهد گرفت.

نسخه بسته‌ها بر اساس یکی از موارد زیر تعیین می‌شود:


- برای نسخه‌های کاری GIT، آخرین برچسب (git describe) جهت تعیین نسخه به کار می‌رود


- اگر بسته شامل فیلد «version» در توصیف بسته باشد، از آن استفاده می‌شود


- اگر هیچ‌کدام اعمال نشود، «~master» فرض می‌شود

مسیر جستجوی بسته‌ای را که قبلاً با add-path اضافه شده بود حذف می‌کند.
یک دایرکتوری بسته محلی را برای استفاده در هنگام حل وابستگی اضافه می‌کند. این دستور برای ثبت بسته‌های محلی مفید است، مانند نسخه‌های کاری GIT که در مخزن بسته موجود نیستند یا قرار است بازنویسی شوند.

نسخه بسته یا به‌طور خودکار تعیین می‌شود (دستور «add-path» را ببینید) یا می‌توان با مشخص کردن نسخه در خط فرمان آن را به صراحت بازنویسی کرد.

برای روشی جهت ثبت هم‌زمان چندین بسته محلی، «dub add-path -h» را ببینید.

یک دایرکتوری بسته محلی را حذف می‌کند.
فهرستی از تمام بسته‌های محلی یا بسته‌های انتخاب‌شده را چاپ می‌کند. این شامل تمام بسته‌های ذخیره‌شده در حافظه پنهان (در سطح کاربر یا کل سامانه)، تمام بسته‌های موجود در مسیرهای جستجوی بسته («dub add-path») و تمام بسته‌های ثبت‌شده به صورت دستی («dub add-local») است. اگر یک بسته (و به صورت اختیاری مشخصه نسخه) تعیین شود، فقط بسته‌های منطبق نمایش داده می‌شوند.
تمام ارائه‌دهندگان مشخص‌شده را برای یافتن بسته‌های منطبق جستجو می‌کند.
این دستور منسوخ شده است. برای دستیابی به همان نتیجه، از وابستگی مبتنی بر مسیر (path based dependency)، مسیر حافظه پنهان سفارشی، یا ویرایش «dub.selections.json» استفاده کنید.
این دستور منسوخ شده است. برای دستیابی به همان نتیجه، از وابستگی مبتنی بر مسیر، مسیر حافظه پنهان سفارشی، یا ویرایش «dub.selections.json» استفاده کنید.
این دستور منسوخ شده است. برای دستیابی به همان نتیجه، از وابستگی مبتنی بر مسیر، مسیر حافظه پنهان سفارشی، یا ویرایش «dub.selections.json» استفاده کنید.
این دستور هرگونه فراداده ذخیره‌شده در حافظه پنهان مانند فهرست بسته‌های موجود و آخرین نسخه آن‌ها را حذف می‌کند.
این دستور فایل‌های دستورالعمل ساخت بسته با قالب JSON و SDLang را به یکدیگر تبدیل می‌کند.

هشدار: توجه داشته باشید که هرگونه قالب‌بندی و کامنت درون دستورالعمل ساخت بسته در طی فرآیند تبدیل از بین خواهد رفت.

-h, --help

راهنمای عمومی یا راهنمای ویژهٔ دستور را نمایش می‌دهد.

--root=VALUE

مسیری که باید به جای دایرکتوری کاری جاری در آن عملیات انجام شود.

--recipe=VALUE

یک مسیر دستورالعمل ساخت سفارشی را به جای dub.json/dub.sdl بارگذاری می‌کند.

--registry=VALUE

هنگام حل وابستگی‌ها ابتدا نشانی URL مخزن داده‌شده را جستجو می‌کند. می‌تواند چندین بار مشخص شود. انواع مخزن در دسترس:
DUB: نشانی URL به مخزن DUB (پیش‌فرض)
Maven: نشانی URL به مخزن Maven به همراه شناسه گروه شامل بسته‌های dub به عنوان مصنوعات ساخت. برای نمونه: mvn+http://localhost:8040/maven/libs-release/dubpackages

--skip-registry=VALUE

حالتی را برای صرف‌نظر کردن از جستجو در انواع خاصی از مخازن بسته تنظیم می‌کند:
none: تمام مخازن پیکربندی‌شده یا پیش‌فرض را جستجو می‌کند (پیش‌فرض)
standard: در مخزن اصلی جستجو نمی‌کند (برای نمونه https://code.dlang.org)
configured: از تمام مخازن پیش‌فرض و پیکربندی‌شده توسط کاربر صرف‌نظر می‌کند
all: فقط مخازنی را که با --registry مشخص شده‌اند جستجو می‌کند

--annotate

هیچ عملیاتی انجام نمی‌دهد، صرفاً آنچه را که قرار است انجام شود چاپ می‌کند.

--bare

تنها بسته‌های موجود در دایرکتوری جاری را می‌خواند.

-v, --verbose

خروجی تشخیصی را چاپ می‌کند.

--vverbose

خروجی اشکال‌زدایی را چاپ می‌کند.

-q, --quiet

فقط هشدارها و خطاها را چاپ می‌کند.

--verror

فقط خطاها را چاپ می‌کند.

--vquiet

هیچ پیامی چاپ نمی‌کند.

--color=VALUE

خروجی رنگی را پیکربندی می‌کند. مقادیر پذیرفته‌شده:
auto: خروجی رنگی در کنسول/ترمینال، مگر اینکه NO_COLOR تنظیم شده و غیرخالی باشد (پیش‌فرض)
always: تحمیل فعال بودن رنگ‌ها
never: تحمیل غیرفعال بودن رنگ‌ها

--cache=VALUE

هر بستهٔ دریافت‌شده را در مکان مشخص‌شده قرار می‌دهد [local|system|user].

dub.sdl, dub.json

حق نشر (c) ۱۹۹۹-۲۰۲۶ متعلق به The D Language Foundation است.

http://code.dlang.org/docs/commandline

dmd(1), rdmd(1), dub-init(1), dub-run(1), dub-build(1), dub-test(1), dub-lint(1), dub-generate(1), dub-describe(1), dub-clean(1), dub-dustmite(1), dub-fetch(1), dub-add(1), dub-remove(1), dub-upgrade(1), dub-add-path(1), dub-remove-path(1), dub-add-local(1), dub-remove-local(1), dub-list(1), dub-search(1), dub-add-override(1), dub-remove-override(1), dub-list-overrides(1), dub-clean-caches(1), dub-convert(1)

2026-08-16 The D Language Foundation