DUB(1) The D Language Foundation DUB(1) نام (NAME) dub - سامانه مدیریت بسته و ساخت برای زبان D خلاصه دستور (SYNOPSIS) dub [--version] [COMMAND] [OPTIONS...] -- [APPLICATION ARGUMENTS...] توضیحات (DESCRIPTION) پروژه DUB را در دایرکتوری جاری مدیریت می‌کند. DUB می‌تواند هم به عنوان یک سامانه ساخت و هم یک مدیر بسته عمل کند و به‌طور خودکار وابستگی‌های پروژه را پیگیری نماید - هم آن‌ها را دانلود کرده و هم به برنامه پیوند (link) دهد. دستورها (COMMANDS) init یک بسته خالی از نوع مشخص‌شده در دایرکتوری داده‌شده ایجاد می‌کند. به‌طور پیش‌فرض، از دایرکتوری کاری جاری استفاده می‌شود. الگوهای سفارشی را می‌توان توسط بسته‌ها با ارائه یک زیربسته به نام «init- exec» تعریف کرد. در این حالت هیچ فایل منبع پیش‌فرضی اضافه نمی‌شود. زیربسته «init-exec» پس از ایجاد دایرکتوری پایه پروژه، در داخل پوشه مقصد کامپایل و اجرا می‌شود. آرگومان‌های آزاد «dub init -t custom -- free args» به عنوان آرگومان‌های برنامه به زیربسته «init-exec» ارسال می‌شوند. run یک بسته را می‌سازد و اجرا می‌کند (به‌طور پیش‌فرض از بسته اصلی در دایرکتوری کاری جاری استفاده می‌کند) build یک بسته را می‌سازد (به‌طور پیش‌فرض از بسته اصلی در دایرکتوری کاری جاری استفاده می‌کند) test بسته را می‌سازد و تمام آزمون‌های واحد (unit tests) موجود را اجرا می‌کند. اگر هیچ پیکربندی صریحی مشخص نشده باشد، یک پیکربندی موجود به نام «unittest» برای آزمایش ترجیح داده می‌شود. اگر وجود نداشته باشد، اولین پیکربندی از نوع کتابخانه استفاده خواهد شد، و اگر آن هم وجود نداشته باشد، اولین پیکربندی اجرایی انتخاب می‌شود. هنگامی که یک فایل اصلی سفارشی (--main-file) مشخص شود، فقط می‌توان از پیکربندی‌های نوع کتابخانه استفاده کرد. در غیر این صورت، بسته به نوع پیکربندی انتخاب‌شده، یا از یک فایل اصلی موجود استفاده می‌شود (که باید به درستی تنظیم شده باشد تا فقط آزمون‌های واحد را برای 'version(unittest)' اجرا کند)، یا DUB یک فایل اصلی برای پیکربندی‌های نوع کتابخانه تولید خواهد کرد. در نهایت، اگر بسته شامل وابستگی به بسته «tested» باشد، فایل اصلی که به‌طور خودکار تولید شده است از آن برای اجرای آزمون‌های واحد استفاده خواهد کرد. lint بسته را می‌سازد و آزمون‌های لینتر D-Scanner را اجرا می‌کند. generate فایل‌های پروژه را با استفاده از یکی از مولدهای پشتیبانی‌شده تولید می‌کند: visuald - فایل‌های پروژه VisualD sublimetext - فایل پروژه SublimeText cmake - اسکریپت‌های ساخت CMake build - بسته را مستقیماً می‌سازد یک نام بسته اختیاری می‌تواند مشخص شود تا بسته‌ای غیر از بسته ریشه/دایرکتوری جاری تولید گردد. describe یک توصیف ساخت 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 clean این دستور هرگونه فایل ساخت ذخیره‌شده در حافظه پنهان بسته(های) مشخص‌شده را حذف می‌کند. فایل هدف نهایی و همچنین هرگونه copyFiles در حال حاضر حذف نمی‌شوند. بدون آرگومان، بسته موجود در دایرکتوری کاری جاری پاک‌سازی خواهد شد. dustmite این دستور از ابزار Dustmite برای جداسازی علت خطاهای ساخت در یک پروژه DUB استفاده می‌کند. یک رونوشت از تمام بسته‌های درگیر ایجاد کرده و dustmite را روی این رونوشت اجرا می‌کند و یک نمونه آزمایشی کاهش‌یافته بر جای می‌گذارد. تعیین شرایط خطای مورد نظر با بررسی کد وضعیت کامپایلر/پیونددهنده و همچنین خروجی آن‌ها (ترکیب stdout و stderr) انجام می‌شود. اگر --program-status یا --program-regex مشخص شده باشد و باینری تولیدشده یک فایل اجرایی باشد، اجرا شده و خروجی آن نیز در تصمیم نهایی لحاظ خواهد شد. fetch هنگامی که با یک یا چند آرگومان اجرا شود، بدون توجه به مکانی که در آن اجرا می‌شود، بسته‌های منطبق با آرگومان(ها) را دریافت می‌کند. مثال‌ها: $ dub fetch vibe-d $ dub fetch vibe-d@v0.9.0 --cache=local --recursive هنگامی که در یک پروژه بدون هیچ آرگومانی اجرا شود، تمام وابستگی‌های آن پروژه را دریافت می‌کند. اگر پروژه دارای وابستگی‌های تعیین‌شده نباشد (نبود «dub.selections.json»)، فرآیند حل وابستگی را نیز انجام می‌دهد. مثال: $ cd myProject && dub fetch توجه داشته باشید که دستورهای «build» و «run» و هر دستور دیگری که به بسته‌ها نیاز دارد، به‌طور خودکار fetch را انجام می‌دهند؛ بنابراین به‌طور کلی نیازی به اجرای این دستور قبل از سایر دستورها نیست. add بسته‌های را به عنوان وابستگی اضافه می‌کند. اجرای «dub add » معادل اضافه کردن به بخش «dependencies» در dub.json/dub.sdl است. اگر نسخه‌ای برای یکی از بسته‌ها مشخص نشده باشد، dub مخزن را برای یافتن آخرین نسخه بررسی می‌کند. remove بسته‌ای را که در سامانه محلی ذخیره شده است حذف می‌کند. upgrade تمام وابستگی‌های بسته را با پرس‌وجو از مخزن(های) بسته برای دریافت نسخه‌های جدید ارتقا می‌دهد. این کار نسخه‌های ذخیره‌شده در فایل انتخاب‌ها (dub.selections.json) را به همین ترتیب به‌روزرسانی می‌کند. اگر یک یا چند نام بسته مشخص شود، فقط همان وابستگی‌ها ارتقا خواهند یافت. در غیر این صورت، تمام وابستگی‌های مستقیم و غیرمستقیم بسته ریشه ارتقا می‌یابند. add-path یک مسیر جستجوی پیش‌فرض برای بسته‌ها اضافه می‌کند. تمام زیرپوشه‌های مستقیم این مسیر برای توصیف‌های بسته جستجو شده و به عنوان بسته در دسترس قرار خواهند گرفت. استفاده از این دستور اثری معادل فراخوانی دستی «dub add-local» روی تک‌تک زیرپوشه‌ها دارد. هر بسته‌ای که با استفاده از add-path ثبت شود، هنگام جستجوی وابستگی‌ها در حین عملیات ساخت نسبت به بسته‌های دانلودشده از مخزن بسته در اولویت قرار خواهد گرفت. نسخه بسته‌ها بر اساس یکی از موارد زیر تعیین می‌شود: - برای نسخه‌های کاری GIT، آخرین برچسب (git describe) جهت تعیین نسخه به کار می‌رود - اگر بسته شامل فیلد «version» در توصیف بسته باشد، از آن استفاده می‌شود - اگر هیچ‌کدام اعمال نشود، «~master» فرض می‌شود remove-path مسیر جستجوی بسته‌ای را که قبلاً با add-path اضافه شده بود حذف می‌کند. add-local یک دایرکتوری بسته محلی را برای استفاده در هنگام حل وابستگی اضافه می‌کند. این دستور برای ثبت بسته‌های محلی مفید است، مانند نسخه‌های کاری GIT که در مخزن بسته موجود نیستند یا قرار است بازنویسی شوند. نسخه بسته یا به‌طور خودکار تعیین می‌شود (دستور «add-path» را ببینید) یا می‌توان با مشخص کردن نسخه در خط فرمان آن را به صراحت بازنویسی کرد. برای روشی جهت ثبت هم‌زمان چندین بسته محلی، «dub add-path -h» را ببینید. remove-local یک دایرکتوری بسته محلی را حذف می‌کند. list فهرستی از تمام بسته‌های محلی یا بسته‌های انتخاب‌شده را چاپ می‌کند. این شامل تمام بسته‌های ذخیره‌شده در حافظه پنهان (در سطح کاربر یا کل سامانه)، تمام بسته‌های موجود در مسیرهای جستجوی بسته («dub add- path») و تمام بسته‌های ثبت‌شده به صورت دستی («dub add-local») است. اگر یک بسته (و به صورت اختیاری مشخصه نسخه) تعیین شود، فقط بسته‌های منطبق نمایش داده می‌شوند. search تمام ارائه‌دهندگان مشخص‌شده را برای یافتن بسته‌های منطبق جستجو می‌کند. add-override این دستور منسوخ شده است. برای دستیابی به همان نتیجه، از وابستگی مبتنی بر مسیر (path based dependency)، مسیر حافظه پنهان سفارشی، یا ویرایش `dub.selections.json` استفاده کنید. remove-override این دستور منسوخ شده است. برای دستیابی به همان نتیجه، از وابستگی مبتنی بر مسیر، مسیر حافظه پنهان سفارشی، یا ویرایش `dub.selections.json` استفاده کنید. list-overrides این دستور منسوخ شده است. برای دستیابی به همان نتیجه، از وابستگی مبتنی بر مسیر، مسیر حافظه پنهان سفارشی، یا ویرایش `dub.selections.json` استفاده کنید. clean-caches این دستور هرگونه فراداده ذخیره‌شده در حافظه پنهان مانند فهرست بسته‌های موجود و آخرین نسخه آن‌ها را حذف می‌کند. convert این دستور فایل‌های دستورالعمل ساخت بسته با قالب JSON و SDLang را به یکدیگر تبدیل می‌کند. هشدار: توجه داشته باشید که هرگونه قالب‌بندی و کامنت درون دستورالعمل ساخت بسته در طی فرآیند تبدیل از بین خواهد رفت. گزینه‌های عمومی (COMMON OPTIONS) -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]. فایل‌ها (FILES) dub.sdl, dub.json نویسنده (AUTHOR) حق نشر (c) ۱۹۹۹-۲۰۲۶ متعلق به The D Language Foundation است مستندات برخط (ONLINE DOCUMENTATION) http://code.dlang.org/docs/commandline همچنین ببینید (SEE ALSO) 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) The D Language Foundation 2026-08-16 DUB(1)