Skip to content

Instantly share code, notes, and snippets.

@theefer
Created December 31, 2013 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theefer/8199450 to your computer and use it in GitHub Desktop.
Save theefer/8199450 to your computer and use it in GitHub Desktop.
Sample Luigi Pipeline file to show compilation recipe for Composer. (Note: partial sample with some code omitted)
var glob = require('../luigi/src/operation/glob');
var bower = require('../luigi/src/operation/bower');
var uglify = require('../luigi/src/operation/uglify')();
var concat = require('../luigi/src/operation/concat')();
var requirejs = require('../luigi/src/operation/requirejs');
var hash = require('../luigi/src/operation/hash')();
var rename = require('../luigi/src/operation/rename');
var less = require('../luigi/src/operation/less');
var lodash = require('../luigi/src/operation/lodash');
var write = require('../luigi/src/operation/write');
var jshint = require('../luigi/src/operation/jshint')();
var all = require('../luigi/src/operation/all');
module.exports = function(luigi) {
var composerBower = bower.from('flexible-content-admin', 'src/main/webapp/static/composer/components');
// FIXME: feels a bit hacky, would be nice to fork on "type" instead
var toBuildDirCustom = write(function(resource) {
if (resource.filename().indexOf('.json') !== -1) {
return 'flexible-content-admin/src/main/resources/conf/flexible_content_admin/assets-mapping.json';
} else {
return 'flexible-content-admin/target/webapp/static/composer/build';
}
});
var composerGlob = glob.within('flexible-content-admin/src/main/webapp/static/composer');
var composerLess = less({
paths: "flexible-content-admin/src/main/webapp/static/composer/stylesheets",
yuicompress: true
});
luigi['compile:composer'] = [
all(
// to minimize
[
all(
[composerBower('keycode', 'index.js'), rename('keycode.js')],
composerBower('angular-unstable'),
composerBower('angular-resource-unstable'),
composerBower('angular-ui-tinymce', 'src/ui-tinymce.js'),
composerBower('pikaday', 'pikaday.js'),
composerBower('requirejs', 'require.js'),
composerGlob('other-libs/modernizr.js'),
composerGlob('js/loader.js')
),
uglify
],
// AMD
// Note: omitted config for brevity
[composerGlob('js/app.js'), requirejs(composerRequireConfig)],
[composerBower('scribe', 'src/scribe.js'), requirejs(scribeRequireConfig)],
[composerBower('fence'), requirejs()],
// pre-minimized
composerBower('jcrop', 'js/jquery.Jcrop.min.js'),
composerBower('jquery', 'jquery.min.js'),
composerBower('jquery-ui', 'ui/minified/jquery-ui.min.js'),
composerBower('moment', 'min/moment.min.js'),
composerBower('ua-parser-js', 'src/ua-parser.min.js'),
composerGlob('other-libs/mixpanel.js'),
composerGlob('other-libs/mixpanel-preinit.js'),
lodash(lodashConfig)
),
hash,
toBuildDirCustom
];
luigi['less:composer'] = [
all(
composerBower('pikaday', 'css/pikaday.css'),
[
// Note: exploiting pass-through feature of glob/bower
composerGlob('stylesheets/main.less'),
composerBower('pasteup', 'less/module/comment.less'),
composerBower('pasteup', 'less/module/witness.less'),
composerBower('pasteup', 'less/module/tweet.less'),
composerLess
]
),
concat,
write('flexible-content-admin/src/main/webapp/static/composer/stylesheets/compiled/composer.css')
];
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment