Shaker is comprised of three components that work together in various ways depending on
the environment. This chapter provides an nontechnical overview focusing on
the three components and how they work together.

Shaker Core is the foundation of Shaker. It alone has the ability to parse shaker.json
configuration files, compute and resolve rollup dimensions and dependencies, and
ultimately generate rollup metadata.

The Shaker Compiler is the build-time component of Shaker. It uses Shaker Core to
generate the metadata and to create the rollups for the application.

Shaker Compiler can be configured for each environment (staging, test, production) in
application.json, and you can also decide what actions to apply to the
rollups (minify, js/css lint, etc). Moreover, you can set what we call deployment tasks,
which allow developers to deploy rollups to different places:

raw - Deploy the assets without doing rollups. This mode will pick the files
directly from disk (handy for development).

local - Compile rollups and output files locally.

s3 - Compile rollups and upload them to Amazon S3 CDN.

Note

Shaker Compiler has nothing to do with any Cocktails product; it is just a name
of a Shaker internal component.

The Shaker Mojito addon is the runtime component of Shaker. It reads the metadata
generated by the Shaker Compiler, and subsequently, manages assets within the application,
picking the correct rollup based on the current environment.

The ShakerHTMLFrame is a copy of the Mojito HTMLFrameMojit, but it additionally includes
the addon and executes Shaker automatically.