Pass commandline arguments to application

To pass command-line arguments to an application you're running, execute dub run <dub arguments> -- <application arguments>.

Single-file packages

For small or script-like applications, DUB supports a special mode where the whole package is contained in a single .d file. The package recipe description can be embedded into code comments within the file:

#!/usr/bin/env dub
/+ dub.sdl:
	name "hello"
+/
void main() {
	import std.stdio : writeln;
	writeln("Hello, World!");
}

This application can be executed by running dub run --single hello.d.

In addition to the normal method of passing commandline arguments, you can use the shorthand dub hello.d <arguments to hello>. This shorthand and the optional shebang allow you to run applications via ./hello <arguments> from your shell if you set the executable bit of the file.

Single-file packages cannot be used to create library packages.

Using dependencies not published on the registry

There are various options to use packages not published on the registry:

dub add-path
Adds a local search directory. All direct subdirectories will be searched for packages. Local search directories are preferred over packages downloaded from the registry.
dub add-local
Similar to the above, but only adds a single package directory.
dub add-override
Overrides a certain version or version range of a package with another version, branch, or path. This can be used to change dependencies system-wide without modifying a package's description or selection files.
Path-based dependencies
Package descriptions in the dub.json/dub.sdl can specify a path instead of a version; this can be used with Git submodules or subtrees, or with a known directory layout, to use arbitrarily defined versions of a dependency. Note that this should only be used for non-public packages.
Path-based selections
You can specify arbitrary versions, branches, and paths in the dub.selections.json file, even if they contradict the dependency specification of the packages involved (note that DUB will output a warning in that case).

Execute dub <command> -h for more information on these commands.