require

macrosince v0.0-2629 clojure.core/requireEdit
(require & args)

Details:

Only usable from a REPL.

Loads libs, skipping any that are already loaded. Each argument is either a libspec that identifies a lib or a flag that modifies how all the identified libs are loaded.

Libspecs

A libspec is a lib name or a vector containing a lib name followed by options expressed as sequential keywords and arguments.

Recognized options:

  • :as takes a symbol as its argument and makes that symbol an alias to the lib's namespace in the current namespace.
  • :refer takes a list of symbols to refer from the namespace..
  • :refer-macros takes a list of macro symbols to refer from the namespace.
  • :include-macros takes a list of macro symbols to refer from the namespace.

Flags

A flag is a keyword. Recognized flags:

  • :reload forces loading of all the identified libs even if they are already loaded
  • :reload-all implies :reload and also forces loading of all libs that the identified libs directly or indirectly load via require or use
  • :verbose triggers printing information about each load, alias, and refer

Examples:

(require '[clojure.string :as string])

See Also:


Source docstring:
Loads libs, skipping any that are already loaded. Each argument is
either a libspec that identifies a lib or a flag that modifies how all the identified
libs are loaded. Use :require in the ns macro in preference to calling this
directly.

Libs

A 'lib' is a named set of resources in classpath whose contents define a
library of ClojureScript code. Lib names are symbols and each lib is associated
with a ClojureScript namespace. A lib's name also locates its root directory
within classpath using Java's package name to classpath-relative path mapping.
All resources in a lib should be contained in the directory structure under its
root directory. All definitions a lib makes should be in its associated namespace.

'require loads a lib by loading its root resource. The root resource path
is derived from the lib name in the following manner:
Consider a lib named by the symbol 'x.y.z; it has the root directory
/x/y/, and its root resource is /x/y/z.clj. The root
resource should contain code to create the lib's namespace (usually by using
the ns macro) and load any additional lib resources.

Libspecs

A libspec is a lib name or a vector containing a lib name followed by
options expressed as sequential keywords and arguments.

Recognized options:
:as takes a symbol as its argument and makes that symbol an alias to the
  lib's namespace in the current namespace.
:refer takes a list of symbols to refer from the namespace.
:refer-macros takes a list of macro symbols to refer from the namespace.
:include-macros true causes macros from the namespace to be required.
:rename specifies a map from referred var names to different
  symbols (and can be used to prevent clashes)


Flags

A flag is a keyword.
Recognized flags: :reload, :reload-all, :verbose
:reload forces loading of all the identified libs even if they are
  already loaded
:reload-all implies :reload and also forces loading of all libs that the
  identified libs directly or indirectly load via require or use
:verbose triggers printing information about each load, alias, and refer

Example:

The following would load the library clojure.string :as string.

(require '[clojure.string :as string])
Source code @ clojurescript:src/main/clojure/cljs/core.cljc
(core/defmacro require
  [& args]
  `(~'ns* ~(cons :require args)))