Available Options

March 9, 2026 ยท View on GitHub

The following options can be provided to deps-new:

  • :template (required) -- symbol (or string) identifying the template to use,
  • :name (required) -- symbol (or string) identifying the project name to create,
  • :target-dir -- string (or symbol) identifying the directory in which to create the project; defaults to the trailing portion of the qualified project name.
  • :overwrite -- indicate whether an existing directory should be overwritten (added to), deleted, or prevent creation of the project; defaults to nil (prevents creation of the project); :delete means delete the existing directory and then create the project; any other truthy value means overlay the project on the existing directory.
  • :test-runner -- as of v0.9.0, you can override the default (Cognitect) test runner in generated projects by specifying :test-runner :lazytest; as of v0.10.1, this is implemented via org.corfield.new.transformers/choose-test-runner as a :template-fn in the app, lib, and template templates.
  • :build -- as of v0.10.0, you can override the default build.clj generation to add Babashka tasks for your project by specifying :build :bb; as of v0.10.1, this is implemented via org.corfield.new.transformers/maybe-add-bb as a :data-fn in app and lib templates.

All of these options, except :name, end up in the data hash map, available to the template and any :data-fn, :template-fn, or :post-process-fn transformers. The :raw-name key is added with the original value of the :name option.

The following optional keys can be provided to override defaults in the template:

  • :artifact/id -- the artifact-id to use in the pom.xml file; defaults to the trailing portion of the qualified project name,
  • :description -- a string used in the generated README and pom.xml files to describe the project; the default value is typically provided by template.edn,
  • :developer -- the capitalized version of your current username,
  • :group/id -- the group-id to use in the pom.xml file; defaults the leading portion of the qualified project name, prefixed by net.clojars. if it does not already contain a .,
  • :main -- the trailing portion of the qualified project name,
  • :name -- the qualified project name (if the original :name was not a qualified symbol, e.g., foo, then this will be foo/foo),
  • :now/date -- the current date, formatted as yyyy-MM-dd,
  • :now/year -- the current year (four digits),
  • :raw-name -- the original project name as supplied on the command-line (which may be unqualified),
  • :scm/domain -- "github.com" unless the leading portion of the qualified project name suggests this should be hosted on gitlab or another SCM provider,
  • :scm/user -- the leading portion of the qualified project name, with known SCM hosts removed and with leading com. or org. removed,
  • :scm/repo -- the trailing portion of the qualified project name,
  • :top -- the leading portion of the qualified project name, with known SCM hosts removed.
  • :user -- your current username,
  • :version -- the version string; defaults to "0.1.0-SNAPSHOT".
  • :license/id -- the license for the project if different than the default EPL-2.0, see the SPDX license list for a list of available license identifiers. The OSI also displays the SPDX id in their listing of OSI-approved licenses. If the license required does not exist in SPDX, you can request its inclusion (if open source) and/or create your own template. From the license id the following additional keys are derived:
    • :license/name, the name of the license,
    • :license/url, the URL associated with the license,
    • :license/text, the full text of the license.
  • :licenses -- the store to use for retrieving license information, which may be:
    • :jar, to get license info from the SPDX jar (default behavior),
    • :cache, to get license info from SPDX API and build an incremental cache,
    • :full-cache, to get license info from a full local cache of all SPDX licenses, which adds a noticeable delay upon first run.

All of these options also end up in the data hash map, either as their default value or the overridden value passed on the command line.

Any additional options you provide to the deps-new command will be also passed through to the template as part of the data map, as well as any :data-fn, :template-fn, or :post-process-fn transformers.