Into The Box Notes: Thinking Modularly - Brad Wood
April 29, 2018
what’s a package?
1. a folder
2. box.json file
3. some code
doesn’t have to be a full blown app.
could be a single UDF, an entire CMS, something in between, etc.
what’s a module?
a super set of what a package is
a package w/ additional conventional lifecycle methods defined by ModuleConfig.cfc
ModuleConfig.cfc
an Ortus convention
an advantage over Node.js
Node modules just sit in a folder
box modules have a lifecycle and can DO things.
simply by existing in the /modules folder
installing packages / modules —
forgebox.io
mysite.com/myPackage.zip
git
github
local file/folder
jars
forgebox.io —
all the Ortus packages
other packages from people in the community
don’t have to log in
free and easy to use
if you want to publish, you’ll need a login, but it’s free
categories for various types of packages
ForgeBox also has a REST API
to make an account from Commandbox on ForgeBox:
box forgebox register
forgebox login — logs you in
stores an api key internally in CommandBox
doesn’t send your password, sends an API key that can be revoked/generated
so it knows which things you have access to
package list —
lists dependencies in that package
CommandBox can install packages from anywhere, not just ForgeBox
as long you have an accessible url, you’re good
make a zip, put the code and box.json inside it, that’s all you need to do.
on ForegeBox
SecurityUtil
BrewPunkAPI
other fun stuff too
Package Dependencies —
packages can depend on other packages
promotes reusability
devDependencies
only required for hacking on the project, not for running it in production
install testbox —saveDev
if you forget to do the —saveDev:
just do “uninstall textbox” then redo “install testbox —saveDev”
Let’s create a package!
package init
or
init —wizard
CommandBox manages the /modules folder
YOU manage the /modules_app folder
Use semantic versioning to note when you change things in your package