recipe file - EugeneN/cafe GitHub Wiki
recipe file
Recipe file is the core configuration file for your client-side application. For now cafe supports .json and .yaml formats for storing your configurations in recipe.
Here is the empty recipe file with it's main sections:
abstract: {api_version: 5}
modules:
# modules list here ...
bundles:
# bundles with modules list, referenced by module names
Modules
One of the main ideas of recipe file is to store all information about your application modules. Term "application module" doesn't mean file, this is one of structural blocks of your app, this may be some file, folder, or even module with it's own recipe.
For instance you have a single coffee file in your client side app folder - module1.coffee
- Object:
# ...
modules:
- module1: # module name as key
path: module1.coffee # relative to your applications folder, where recipe is stored
type: commonjs # specify module type plainjs or commonjs (commonjs by default)
deps: [module2, module3] # "[list of modules names from which module depends]"
# ...
- List (less verbose):
modules:
- module1: [module1.coffee, commonjs, [module2, module3]] # module_name :[path, type, deps]
this. also works:
modules:
- module1: [module.coffee, commonjs] # module_name: [path, type]
or even this:
modules:
- module1: [module.coffee, [module2, module3]] # module_name: [path, deps]
- Simple string (name):
modules:
- module1: module1.coffee
The rest of metadata will be set to it's defaults values.
- If no name is set then name = path without extension (if present)
- If no path is set then path = name
- Default type - commonjs
- Default deps - []
Bundles
Bundles are your result processed with joined modules and wrapper for require function (if commonjs). To add some module to bundle you need to add module name to "modules" section of bundle
# ...
bundles:
bundle1: # specify bundle name, this will result to bundle1.js file
modules:
- module1
- module2
- module3
bundle2:
# --- bundle2 modules
# ...
here is the basic recipe configuration file:
abstract: {api_version: 5}
modules:
- module1: modules/module1
- jquery: [jquery.1.8.js, plainjs]
- module2: [modules/module2, [jquery]]
- my_coffee_module: [my_coffee_file.coffee]
bundles:
bundle1:
modules:
- jquery
- module1
- module2
- my_coffee_module
bundle2:
modules:
- jquery
- module1
- my_coffee_module
TODO: realms, recipe extends section.