1DUB(1)                     The D Language Foundation                    DUB(1)
2
3
4

NAME

6       dub - Package and build management system for D
7

SYNOPSIS

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

DESCRIPTION

12       Manages  the  DUB  project in the current directory. DUB can serve as a
13       build system and a package  manager,  automatically  keeping  track  of
14       project's  dependencies  -  both downloading them and linking them into
15       the application.
16

COMMANDS

18       init   Initializes an empty package of the specified type in the  given
19              directory. By default, the current working directory is used.
20
21       run    Builds  and runs a package (uses the main package in the current
22              working directory by default)
23
24       build  Builds a package (uses the main package in the  current  working
25              directory by default)
26
27       test   Builds the package and executes all contained unit tests.
28
29              If  no  explicit  configuration is given, an existing "unittest"
30              configuration will be preferred for testing. If none exists, the
31              first  library  type  configuration  will  be  used, and if that
32              doesn't exist either, the first executable configuration is cho‐
33              sen.
34
35              When a custom main file (--main-file) is specified, only library
36              configurations can be used. Otherwise, depending on the type  of
37              the selected configuration, either an existing main file will be
38              used (and needs to be properly adjusted to  just  run  the  unit
39              tests for 'version(unittest)'), or DUB will generate one for li‐
40              brary type configurations.
41
42              Finally, if the package contains a dependency  to  the  "tested"
43              package,  the  automatically  generated main file will use it to
44              run the unit tests.
45
46       lint   Builds the package and executes D-Scanner linter tests.
47
48       generate
49              Generates project files using one of the supported generators:
50
51              visuald  -  VisualD  project  files  sublimetext  -  SublimeText
52              project  file  cmake  -  CMake  build scripts build - Builds the
53              package directly
54
55              An optional package name can be given to  generate  a  different
56              package than the root/CWD package.
57
58       describe
59              Prints  a  JSON build description for the root package an all of
60              their dependencies in a format similar to  a  JSON  package  de‐
61              scription file. This is useful mostly for IDEs.
62
63              All  usual options that are also used for build/run/generate ap‐
64              ply.
65
66              When --data=VALUE is supplied, specific  build  settings  for  a
67              project  will  be printed instead (by default, formatted for the
68              current compiler).
69
70              The --data=VALUE option can be specified multiple times  to  re‐
71              trieve  several pieces of information at once. A comma-separated
72              list is also acceptable (ex: --data=dflags,libs). The data  will
73              be output in the same order requested on the command line.
74
75              The accepted values for --data=VALUE are:
76
77              main-source-file,  dflags,  lflags,  libs, linker-files, source-
78              files, versions,  debug-versions,  import-paths,  string-import-
79              paths, import-files, options
80
81              The  following  are  also  accepted  by --data if --data-list is
82              used:
83
84              target-type, target-path, target-name, working-directory,  copy-
85              files,  string-import-files,  pre-generate-commands, post-gener‐
86              ate-commands, pre-build-commands, post-build-commands,  require‐
87              ments
88
89       clean  This  command  removes any cached build files of the given pack‐
90              age(s). The final target file, as well as any copyFiles are cur‐
91              rently  not removed.  Without arguments, the package in the cur‐
92              rent working directory will be cleaned.
93
94       dustmite
95              This command uses the Dustmite utility to isolate the  cause  of
96              build errors in a DUB project.
97
98              It  will create a copy of all involved packages and run dustmite
99              on this copy, leaving a reduced test case.
100
101              Determining the desired error condition is done by checking  the
102              compiler/linker status code, as well as their output (stdout and
103              stderr combined).  If  --program-status  or  --program-regex  is
104              given and the generated binary is an executable, it will be exe‐
105              cuted and its output will also be incorporated  into  the  final
106              decision.
107
108       fetch  Note:  Use "dub add <dependency>" if you just want to use a cer‐
109              tain package as a dependency, you don't have to explicitly fetch
110              packages.
111
112              Explicit  retrieval/removal  of packages is only needed when you
113              want to put packages in a place where several  applications  can
114              share  them. If you just have a dependency to add, use the `add`
115              command. Dub will do the rest for you.
116
117              Without specified options, placement/removal will default  to  a
118              user wide shared location.
119
120              Complete applications can be retrieved and run easily by e.g.  $
121              dub fetch vibelog --cache=local $ dub run vibelog --cache=local
122
123              This will grab all needed dependencies and compile and  run  the
124              application.
125
126              Note:  DUB  does not do a system installation of packages. Pack‐
127              ages are instead only registered within DUB's  internal  ecosys‐
128              tem.  Generation  of  native  system  packages/installers may be
129              added later as a separate feature.
130
131       install
132              Note: Use "dub add <dependency>" if you just want to use a  cer‐
133              tain package as a dependency, you don't have to explicitly fetch
134              packages.
135
136              Explicit retrieval/removal of packages is only needed  when  you
137              want  to  put packages in a place where several applications can
138              share them. If you just have a dependency to add, use the  `add`
139              command. Dub will do the rest for you.
140
141              Without  specified  options, placement/removal will default to a
142              user wide shared location.
143
144              Complete applications can be retrieved and run easily by e.g.  $
145              dub fetch vibelog --cache=local $ dub run vibelog --cache=local
146
147              This  will  grab all needed dependencies and compile and run the
148              application.
149
150              Note: DUB does not do a system installation of  packages.  Pack‐
151              ages  are  instead only registered within DUB's internal ecosys‐
152              tem. Generation of  native  system  packages/installers  may  be
153              added later as a separate feature.
154
155       add    Adds <packages> as dependencies.
156
157              Running  "dub  add <package>" is the same as adding <package> to
158              the "dependencies" section in dub.json/dub.sdl.  If  no  version
159              is  specified  for  one of the packages, dub will query the reg‐
160              istry for the latest version.
161
162       remove Removes a package that is cached on the local system.
163
164       uninstall
165              Removes a package that is cached on the local system.
166
167       upgrade
168              Upgrades all dependencies of the package by querying the package
169              registry(ies) for new versions.
170
171              This  will  update  the  versions  stored in the selections file
172              (dub.selections.json) accordingly.
173
174              If one or more package names are specified, only those dependen‐
175              cies  will be upgraded. Otherwise all direct and indirect depen‐
176              dencies of the root package will get upgraded.
177
178       add-path
179              Adds a default package search path. All direct  sub  folders  of
180              this  path will be searched for package descriptions and will be
181              made available as packages. Using this command has  the  equiva‐
182              lent  effect as calling 'dub add-local' on each of the sub fold‐
183              ers manually.
184
185              Any packages registered using add-path will  be  preferred  over
186              packages downloaded from the package registry when searching for
187              dependencies during a build operation.
188
189              The version of the packages will be determined  by  one  of  the
190              following:
191                -  For GIT working copies, the last tag (git describe) is used
192              to determine the version
193                - If the package contains a "version" field in the package de‐
194              scription, this is used
195                - If neither of those apply, "~master" is assumed
196
197       remove-path
198              Removes a package search path previously added with add-path.
199
200       add-local
201              Adds a local package directory to be used during dependency res‐
202              olution. This command is useful for registering local  packages,
203              such as GIT working copies, that are either not available in the
204              package registry, or are supposed to be overwritten.
205
206              The version of the package is  either  determined  automatically
207              (see the "add-path" command, or can be explicitly overwritten by
208              passing a version on the command line.
209
210              See 'dub add-path -h' for a way to register multiple local pack‐
211              ages at once.
212
213       remove-local
214              Removes a local package directory
215
216       list   Prints  a  list  of all local packages. This includes all cached
217              packages (user or system wide),  all  packages  in  the  package
218              search  paths ("dub add-path") and all manually registered pack‐
219              ages ("dub add-local").
220
221       search Search all specified DUB registries for packages matching query.
222
223       add-override
224
225
226       remove-override
227
228
229       list-overrides
230              Prints a list of all overridden packages  added  via  "dub  add-
231              override".
232
233       clean-caches
234              This command removes any cached metadata like the list of avail‐
235              able packages and their latest version.
236
237       convert
238              This command will convert  between  JSON  and  SDLang  formatted
239              package recipe files.
240
241              Warning:  Beware  that  any  formatting  and comments within the
242              package recipe will get lost in the conversion process.
243

COMMON OPTIONS

245       -h,    Display general or command specific help
246
247       --root=VALUE
248              Path to operate in instead of the current working dir
249
250       --registry=VALUE
251              Search the given registry URL first when resolving dependencies.
252              Can be specified multiple times. Available registry types:
253                DUB: URL to DUB registry (default)
254                Maven: URL to Maven repository + group id containing dub pack‐
255              ages as artifacts. E.g. mvn+http://localhost:8040/maven/libs-re‐
256              lease/dubpackages
257
258       --skip-registry=VALUE
259              Sets  a mode for skipping the search on certain package registry
260              types:
261                none: Search all configured or default registries (default)
262                standard:   Don't   search    the    main    registry    (e.g.
263              https://code.dlang.org/)
264                configured: Skip all default and user configured registries
265                all: Only search registries specified with --registry
266
267       --annotate
268              Do not perform any action, just print what would be done
269
270       --bare Read only packages contained in the current directory
271
272       -v,    Print diagnostic output
273
274       --vverbose
275              Print debug output
276
277       -q,    Only print warnings and errors
278
279       --verror
280              Only print errors
281
282       --vquiet
283              Print no messages
284
285       --cache=VALUE
286              Puts  any fetched packages in the specified location [local|sys‐
287              tem|user].
288

FILES

290       dub.sdl, dub.json
291

AUTHOR

293       Copyright (c) 1999-2022 by The D Language Foundation
294

ONLINE DOCUMENTATION

296http://code.dlang.org/docs/commandlinehttp://code.dlang.org/docs/commandline
297

SEE ALSO

299       dmd(1),  rdmd(1),  dub-init(1),  dub-run(1), dub-build(1), dub-test(1),
300       dub-lint(1), dub-generate(1), dub-describe(1), dub-clean(1),  dub-dust‐
301       mite(1),  dub-fetch(1), dub-install(1), dub-add(1), dub-remove(1), dub-
302       uninstall(1), dub-upgrade(1), dub-add-path(1), dub-remove-path(1), dub-
303       add-local(1), dub-remove-local(1), dub-list(1), dub-search(1), dub-add-
304       override(1), dub-remove-override(1), dub-list-overrides(1),  dub-clean-
305       caches(1), dub-convert(1)
306
307
308
309The D Language Foundation         2022-07-27                            DUB(1)
Impressum