cosname

Gulp Bower dependencies code

Mar 30th, 2015
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var gulp = require('gulp'),
  2.     plumber = require('gulp-plumber'),
  3.     globals = require('./globals');
  4.  
  5. gulp.task('fonts', function() {

  6.   var src = globals.filesSelector(['fonts']);
  7.   src.push('./bower_components/bootstrap/fonts/**.*');
  8.   return gulp.src(src)
  9.     .pipe(plumber())
  10.     .pipe(gulp.dest(globals.dist.fonts));

  11. });
  12.  
  13. var underscore = require('underscore');
  14. var underscoreStr = require('underscore.string');
  15. var concat = require('gulp-concat');
  16. var gulp = require('gulp');
  17.  
  18. var exclude = ['lib1', 'lib2'];
  19.  
  20. gulp.task('bundle-libraries-auto', function(){
  21.   var fs = require('fs');
  22.   var bowerFile = require('./../../bower.json');
  23.   var bowerPackages = bowerFile.dependencies;
  24.   var bowerDir = './bower_components';
  25.   var packagesOrder = [];
  26.   var mainFiles = [];
  27.  
  28.   console.log(bowerFile.dependencies);
  29.  
  30.   // Function for adding package name into packagesOrder array in the right order
  31.   function addPackage(name){
  32.     // package info and dependencies
  33.     if (!fs.existsSync(bowerDir + '/' + name + '/bower.json')) {
  34.       console.log('bower.json missing in package `' + name + '`');
  35.       return;
  36.     }
  37.     var info = JSON.parse(fs.readFileSync(bowerDir + '/' + name + '/bower.json', 'utf8'));
  38.     return;
  39.     var dependencies = info.dependencies;
  40.  
  41.     // add dependencies by repeat the step
  42.     if(!!dependencies){
  43.       underscore.each(dependencies, function(value, key){
  44.         if(exclude.indexOf(key) === -1){
  45.           addPackage(key);
  46.         }
  47.       });
  48.     }
  49.  
  50.     // and then add this package into the packagesOrder array if they are not exist yet
  51.     if(packagesOrder.indexOf(name) === -1){
  52.       packagesOrder.push(name);
  53.     }
  54.   }
  55.  
  56.   // calculate the order of packages
  57.   underscore.each(bowerPackages, function(value, key){
  58.     if(exclude.indexOf(key) === -1){ // add to packagesOrder if it's not in exclude
  59.       addPackage(key);
  60.     }
  61.   });
  62.  
  63.   // get the main files of packages base on the order
  64.   underscore.each(packagesOrder, function(bowerPackage){
  65.     if (!fs.existsSync(bowerDir + '/' + name + '/bower.json')) {
  66.       console.log('bower.json missing in package `' + name + '`');
  67.       return;
  68.     }
  69.     var info = JSON.parse(fs.readFileSync(bowerDir + '/' + name + '/bower.json', 'utf8'));
  70.     var main = info.main;
  71.     var mainFile = main;
  72.  
  73.     // get only the .js file if mainFile is an array
  74.     if(underscore.isArray(main)){
  75.       underscore.each(main, function(file){
  76.         if(underscoreStr.endsWith(file, '.js')){
  77.           mainFile = file;
  78.         }
  79.       });
  80.     }
  81.  
  82.     // make the full path
  83.     mainFile = bowerDir + '/' + bowerPackage + '/' + mainFile;
  84.  
  85.     // only add the main file if it's a js file
  86.     if(underscoreStr.endsWith(mainFile, '.js')){
  87.       mainFiles.push(mainFile);
  88.     }
  89.   });
  90.  
  91.   console.log(mainFiles);
  92. });
Advertisement
Add Comment
Please, Sign In to add comment