UNPKG

2.84 kBJavaScriptView Raw
1/**
2 * Created by Nikolay Glushchenko <nick@nickalie.com> on 08.09.2015.
3 */
4
5var gulp = require('gulp');
6var mainBowerFiles = require('gulp-main-bower-files');
7var gutil = require('gulp-util');
8var filter = require('gulp-filter');
9var uglify = require('gulp-uglify');
10var gulpif = require('gulp-if');
11var sourcemaps = require('gulp-sourcemaps');
12var ignore = require('gulp-ignore');
13var debug = require('gulp-debug');
14var concat = require('gulp-concat');
15var gzip = require('gulp-gzip');
16var flatten = require('gulp-flatten');
17var merge = require('merge-stream');
18var _ = require('underscore');
19var bowerJson = require('./common').bowerJson;
20var prod = require('./common').prod;
21
22console.log('prod mode=' + prod)
23module.exports = function(done) {
24 var bower_excludes = bowerJson.excludes.map(function(it) {
25 return "**/" + it + "/**/*";
26 });
27
28 var bower_standalone = bowerJson.standalone.map(function(it) {
29 return "**/" + it + "/**/*";
30 });
31
32 for (var i = 0; i < bowerJson.standalone.length; i++) {
33 bowerConcat(filter('**/' + bowerJson.standalone[i] + "/**/*"), bowerJson.standalone[i], false);
34 }
35
36 _.each(bowerJson.directories, function(dirs, dep) {
37 console.log('coping ' + dirs + " for " + dep);
38
39 dirs.forEach(function(dir) {
40 var base = "bower_components/" + dep;
41 gulp.src(base + "/" + dir, {
42 base: base
43 }).pipe(gulp.dest('build/'));
44 });
45
46 });
47
48 if (bowerJson.excludes.length > 0 || bowerJson.standalone.length > 0) {
49 bowerConcat(ignore.exclude(_.union(bower_excludes, bower_standalone)), 'dependencies', prod, done);
50 } else {
51 bowerConcat(gutil.noop(), 'dependencies', prod, done)
52 }
53};
54
55function bowerConcat(expr, name, _uglify) {
56 var js = bower()
57 .pipe(expr)
58 .pipe(filter('**/*.js'))
59 .pipe(debug())
60 .pipe(sourcemaps.init())
61 .pipe(gulpif(_uglify, uglify({
62 mangle: false
63 })))
64 .pipe(concat(name + '.js'))
65 .pipe(sourcemaps.write('.'))
66 .pipe(gulp.dest('build'))
67 .pipe(gzip())
68 .pipe(gulp.dest('build'));
69
70 var css = bower()
71 .pipe(expr)
72 .pipe(filter('**/*.css'))
73 .pipe(concat(name + '.css'))
74 .pipe(gulp.dest('build'))
75 .pipe(gzip())
76 .pipe(gulp.dest('build'));
77
78 var other = bower()
79 .pipe(expr)
80 .pipe(filter(['**/*', '!**/*.css', '!**/*.js', '!**/*.less']))
81 .pipe(flatten())
82 .pipe(gulp.dest('build'));
83
84 return merge(js, css, other)
85}
86
87function bower() {
88 if (bowerJson.overrides.length > 0) {
89 return gulp.src('./bower.json').pipe(mainBowerFiles({
90 overrides: bowerJson.overrides
91 }))
92 } else {
93 return gulp.src('./bower.json').pipe(mainBowerFiles())
94 }
95}
\No newline at end of file