UNPKG

2.86 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
22prod = !process.env.DEV;
23
24console.log('prod mode=' + prod)
25module.exports = function(done) {
26 var bower_excludes = bowerJson.excludes.map(function(it) {
27 return "**/" + it + "/**/*";
28 });
29
30 var bower_standalone = bowerJson.standalone.map(function(it) {
31 return "**/" + it + "/**/*";
32 });
33
34 for (var i = 0; i < bowerJson.standalone.length; i++) {
35 bowerConcat(filter('**/' + bowerJson.standalone[i] + "/**/*"), bowerJson.standalone[i], false);
36 }
37
38 _.each(bowerJson.directories, function(dirs, dep) {
39 console.log('coping ' + dirs + " for " + dep);
40
41 dirs.forEach(function(dir) {
42 var base = "bower_components/" + dep;
43 gulp.src(base + "/" + dir, {
44 base: base
45 }).pipe(gulp.dest('build/'));
46 });
47
48 });
49
50 if (bowerJson.excludes.length > 0 || bowerJson.standalone.length > 0) {
51 bowerConcat(ignore.exclude(_.union(bower_excludes, bower_standalone)), 'dependencies', prod, done);
52 } else {
53 bowerConcat(gutil.noop(), 'dependencies', prod, done)
54 }
55};
56
57function bowerConcat(expr, name, _uglify) {
58 var js = bower()
59 .pipe(expr)
60 .pipe(filter('**/*.js'))
61 .pipe(debug())
62 .pipe(sourcemaps.init())
63 .pipe(gulpif(_uglify, uglify({
64 mangle: false
65 })))
66 .pipe(concat(name + '.js'))
67 .pipe(sourcemaps.write('.'))
68 .pipe(gulp.dest('build'))
69 .pipe(gzip())
70 .pipe(gulp.dest('build'));
71
72 var css = bower()
73 .pipe(expr)
74 .pipe(filter('**/*.css'))
75 .pipe(concat(name + '.css'))
76 .pipe(gulp.dest('build'))
77 .pipe(gzip())
78 .pipe(gulp.dest('build'));
79
80 var other = bower()
81 .pipe(expr)
82 .pipe(filter(['**/*', '!**/*.css', '!**/*.js', '!**/*.less']))
83 .pipe(flatten())
84 .pipe(gulp.dest('build'));
85
86 return merge(js, css, other)
87}
88
89function bower() {
90 if (bowerJson.overrides.length > 0) {
91 return gulp.src('./bower.json').pipe(mainBowerFiles({
92 overrides: bowerJson.overrides
93 }))
94 } else {
95 return gulp.src('./bower.json').pipe(mainBowerFiles())
96 }
97}
\No newline at end of file