The install command is used to tell CommandBox what you want. Here we ask for the stable release of the ColdBox MVC Platform. "coldbox" is the name of the ForgeBox slug.
Packages should always have a
box.json descriptor file inside them. This is especially true of packages installed from endpoints other than Forgebox since they don't have any other metadata available. CommandBox will install any zip file even if it doesn't have a
box.json, but this isn't ideal since the name, version, and type of the package must be guessed in that instance.
If you find a package on the internet that doesn't have a
box.json, please contact the maintainer and request that they add one or submit a pull request!
ForgeBox supports semantic version ranges for installing packages. Here are some examples:
# Latest stable versionCommandBox> install foo# Same as aboveCommandBox> install foo@stable# latest version, even if pre release (bleeding edge)CommandBox> install foo@be# A specific versionCommandBox> install firstname.lastname@example.org# Any version with a major number of 4 (4.1, 4.2, 4.9, etc)CommandBox> install email@example.com# Any version greater than 1.5.0CommandBox> install foo@>1.5.0# Any version greater than 5.2 but less than or equal to 6.3.4CommandBox> install "foo@>5.2 <=6.3.4"# Any version greater than or equal to 1.2 but less than or equal to 3.2CommandBox> install "firstname.lastname@example.org - 3.2"# Allows patch-level changes if a minor version is specified. Allows minor-level changes if not. (2.1.2, 2.1.3, 2.1.4, etc)CommandBox> install foo@~2.1# Any greater version that does not modify the left-most non-zero digit. 4.2, 4.3, 4.9, etcCommandBox> install foo@^4.1.4
When you install a package, here are the steps that are taken. Most all of this should be evident by the output streamed to the console during the install process. To get even more juicy details, use the
--verbose flag while installing.
CommandBox inspects the ID passed to the
install command to determine the endpoint to use.
The matching endpoint is asked to fetch the package represented by the ID.
For example, the ForgeBox endpoint checks the local artifact cache and possibly downloads the package.
If ForgeBox is offline, the best match package will be looked for in your artifacts.
The package is unzipped and its box.json is read
Installation directory is finalized
Contents of package are copied based the ignoreList and --production flag
The package is saved as a dependency in the root box.json
The package's dependencies are installed