Libraries in BladeRunnerJS, like those in other web applications, can contain the definition of useful functionality, UI components or services.
There are two types of library - BRJS conformant libraries (libraries that BRJS presently understands "out of the box") and third-party libraries. Both types of libraries contain configuration in order to identify to BRJS which type they are.
Note: In the future we hope to provide "out of the box" support for other types of libraries that have been drawn down from popular package management repositories such as npm and bower. Right now, you can use these, but you need to put in a little bit of work in order to achieve this.
For information on how to create or edit libraries, see How to Use Libraries.
The two types of library differ in how they are structured. BRJS libraries conform to the same structure as a blade whereas the structure of a third-party library can vary considerably.
BRJS conformant Libraries
BRJS libraries will contain the following files and directories:
tests- which contains the tests and test assets
resources- for HTML, CSS and other resources
br-lib.conf- the configuration file for the library
The library configuration file,
br-lib.conf, is a YAML file that is used to configure properties on the library. An example of this configuration is below.
requirePrefixdefines the require prefix for all source files and assets contained within the library. Much like where a Blade must have a defined prefix, libraries have a defined prefix too. The default value for
requirePrefixis the name of the library itself.
Thirdparty libraries are intended for libraries that don't have any structure to the contained source files and assets. For example 'jQuery' and 'Twitter Bootstrap' are both libraries that are well suited to be a Thirdparty Library as they both don't have any defined structure and are simply a directory of files.
Thirdparty libraries can contain any file type, such as
.css, in any structure you like. These libraries must contain a
thirdparty-lib.manifest YAML file which BRJS uses to define how to handle the assets within the library. An example of this configuration is below.
depends: someOtherLibrary js: js/*.js css: css/*.js exports: myLibrary commonjsDefinition: true
dependsallows a third-party library to depend on another library (including BRJS conformant libraries). For example, if a 'twitterbootstrap' had a dependeny on a 'jquery' library you could use the
dependsconfiguration. This option is needed to explicitly define dependencies since, unlike other types of source code, BRJS cannot infer depencies for Thirdparty libraries since the structure of the source code is unknown.
.cssfiles in the root of the library directory are bundled. The option can support limited wildcards, for example
**/*.jsto bundle all '.js' files in the 'src' directory and all 'js' files in all directories and sub-directories respectively.
window.jQuery = ...) so the value of
exportswould be 'jQuery'. The value of
exportsis not always the same as the name of the library. For example 'knockout' defines 'ko' on the window object, so the value of
exportswould be 'ko'. If the library does not need to export anything (for example, it is solely used for css) then you can export an empty object. This is specified by setting
"s which are needed to define a literal
commonjsDefinitiondefines whether or not this library should be treated as a CommonJS library. This causes the library to be wrapped in a
defineblock, preventing it from defining itself on
To find out how to create new libraries and use existing libraries, go to Using Libraries.