From 063a77d1490c08e681ef3c5975b7344860dbfa7f Mon Sep 17 00:00:00 2001 From: Austin Pray Date: Mon, 24 Nov 2014 11:33:32 -0600 Subject: [PATCH] Refactor: remove manifest file concerns https://github.com/austinpray/asset-builder Moves all manifest parsing concerns to separate node module --- gulpfile.js | 77 ++-------------------------------------------------- package.json | 1 + 2 files changed, 3 insertions(+), 75 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 3f08b44..97f0f36 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,84 +5,11 @@ var gulp = require('gulp'); var lazypipe = require('lazypipe'); var mainBowerFiles = require('main-bower-files'); var obj = require('object-path'); -var traverse = require('traverse'); -var util = require('util'); -function getManifest(path) { - var m = require(path); - var defaults = { - buildPaths: { - appendSrc: ['theme'], - src: 'assets/', - dist: 'dist/' - } - }; - var err = function (msg) { - msg = msg || 'file seems to be malformed'; - console.error('Manifest File Error: %s: %s', path, msg); - process.exit(1); - }; - var required = ['dependencies', 'buildPaths']; - - if(_.isPlainObject(m)) { - m = _.defaults(m, defaults); - - _.forEach(required, function (req) { - if(!obj.has(m, req)) { - err('missing "'+req+'" property'); - } - }); - - traverse(m.dependencies).forEach(function (node) { - if(this.isLeaf && !_.isArray(node) && !_.isArray(this.parent.node)) { - this.update([node]); - } - }); - - if(m.buildPaths.appendSrc) { - _.forOwn(m.dependencies, function (dependency, name) { - if(m.buildPaths.appendSrc.indexOf(name) >= 0) { - traverse(m.dependencies[name]).forEach(function (node) { - if(this.isLeaf) { - this.update(m.buildPaths.src + node); - } - }); - } - }); - } - - return m; - } else { - err(); - } -} - -var manifest = getManifest('./assets/manifest.json'); +var manifest = require('asset-builder')('./assets/manifest.json'); var path = manifest.buildPaths; - -var bower = require('wiredep')({ - exclude: obj.get(manifest, 'ignoreDependencies.bower') -}); - -var globs = (function buildGlobs() { - return { - scripts: (bower.js || []) - .concat(obj.get(manifest, 'dependencies.vendor.scripts', [])) - .concat(obj.get(manifest, 'dependencies.theme.scripts', [])), - scriptsIgnored: _.reduce(obj.get(manifest, 'ignoreDependencies.bower', []), - function (paths, depName) { - return paths.concat(obj.get(bower, 'packages.'+depName+'.main', [])); - }, []), - styles: (bower.css || []) - .concat(obj.get(manifest, 'dependencies.vendor.styles', [])) - .concat(obj.get(manifest, 'dependencies.theme.styles', [])), - editorStyle: obj.get(manifest, 'dependencies.theme.editorStyle', []), - fonts: mainBowerFiles({ filter: /\.(eot|svg|ttf|woff)$/i }) - .concat(manifest.buildPaths.src + 'fonts/**/*.{eot,svg,ttf,woff}'), - images: path.src + 'images/**/*' - }; -})(); +var globs = manifest.globs; var cssTasks = function(filename) { return lazypipe() diff --git a/package.json b/package.json index a91d162..6e6884e 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "node": ">= 0.10.0" }, "devDependencies": { + "asset-builder": "0.0.1", "del": "^0.1.3", "gulp": "^3.8.10", "gulp-autoprefixer": "^2.0.0",