> tibet-rollup

# tibet-rollup(1) -- concatenates a package@config's resources

## SYNOPSIS

`tibet rollup [package-opts] [--headers] [--minify] [--clean] [--debug]`

## DESCRIPTION

Creates a concatenated and optionally minified version of a `package@config`.

This command is normally invoked via `tibet build` rather than manually, however you can use it directly if you desire.

Output from this command is written to stdout for use in redirection. By default the output is not minified but it does it contain filename data (aka 'headers') to assist TIBET by providing file load metadata.

You can minify output via the `--minify` flag, and turn off headers via `--no-headers` should you choose. Normally these flags are managed by one or more `tibet make` targets used to build library or app-level bundles.

Note that in its current form TIBET does not play well with minifiers which rename functions. TIBET makes extensive use of dynamic method invocations which preclude using generic obfuscators, at least in their more agressive forms. Future extensions to this command will support TIBET-specific obfuscations.

## OPTIONS

- `--headers` : Tells the rollup process to include 'header' information which points to the source file(s) used in the rollup. This information is necessary for certain TIBET reflection operations at runtime.

  - `--minify` : Signifies that the rollup output should pass through the minification process. Note that overly agressive obfuscation will cause TIBET code to fail. Future additions to TIBET will support more agressive minification.

- `--clean` : Removes any pre-existing content in the "build cache" so that all files being rolled up are fully processed rather than relying on cached content.

- `--debug` : Tells the rollup process to print the output that it is generating to stdout.

- `[package-opts]` : Refers to valid options for a TIBET Package object. See help from the `tibet package` command for the full list of options here.

## CONFIGURATION SETTINGS

No TIBET configuration variables are utilized by this command.

## ENVIRONMENT VARIABLES

No process environment variables are required by this command.

## EXAMPLES

### Roll up the default package@config

    $ tibet rollup

    TP.boot.$$srcPath = '~app_src/APP.hello.js';
    /**
     * @type {Namespace}
     * @summary Defines namespace-level objects and functionality for the project.
     */

    /**
     * Define the JavaScript namespace object which will hold application code.
     */
    TP.defineNamespace('APP.hello');
    ...
    ...
    TP.boot.$$srcPath = '~app_build/tags.APP.hello.app.xhtml.js';
    TP.uc('~app_tags/APP.hello.app/APP.hello.app.xhtml').setContent(
    '    <h1 tibet:tag="hello:app" class="hello">\n        Welcome to your new TIBET application!\n    </h1>\n'
    );

### Roll up application resources in minified form

    $ tibet rollup --minify

    TP.boot.$$srcPath = '~app_src/APP.hello.js';
    TP.defineNamespace('APP.hello');TP.w3.Xmlns.registerNSInfo('urn:app:hello',TP.hc('prefix','hello'));
    TP.boot.$$srcPath = '~app_src/APP.hello.Application.js';
    TP.core.Application.defineSubtype('APP.hello.Application');APP.hello.Application.Inst.defineHandler('AppDidInitialize',function(b){var a;a=TP.core.StateMachine.construct();a.defineState(null,'home');a.defineState('home','fuzzy');a.defineState('home','fluffy');a.defineState('fuzzy','fluffy');a.defineState('fluffy','fuzzy');a.defineState('fluffy');a.defineState('fuzzy');a.activate();this.setStateMachine(a);TP.sys.getLocale().registerStrings({HELLO:'Hello World!'});return this;});
    TP.boot.$$srcPath = '~app_tags/APP.hello.app/APP.hello.app.js';
    TP.tag.TemplatedTag.defineSubtype('APP.hello:app');
    TP.boot.$$srcPath = '~app_build/tags.APP.hello.app.xhtml.js';
    TP.uc('~app_tags/APP.hello.app/APP.hello.app.xhtml').setContent('    <h1 tibet:tag="hello:app" class="hello">\n        Welcome to your new TIBET application!\n    </h1>\n');
    TP.boot.$$srcPath = '~app_build/tags.APP.hello.app.css.js';
    TP.uc('~app_tags/APP.hello.app/APP.hello.app.css').setContent('/**\n * @overview \'APP.hello.app\' styles.\n */\n\n@namespace tibet url(http://www.technicalpursuit.com/1999/tibet);\n@namespace hello url(urn:tibet:hello);\n\n/**\n * If your template/compute process transforms <hello:app/> tags\n * from namespaced XML into XHTML with a tibet:tag attribute so they render\n * in the page similar to <div tibet:tag="hello:app"/> place your\n * style in rules with the following root form:\n */\n*[tibet|tag="hello:app"] {\n    /* style here for xhtml converted tags */\n}\n\n/**\n * If you don\'t transform from XML form (tags in the page remain in their\n * <hello:app/> form) use rules of this form:\n */\nhello|app {\n}\n');

## TIBET SHELL

This command has no client-side TSH peer command.

## TROUBLESHOOTING

## SEE ALSO

- tibet-package(1)
- tibet-resources(1)