1 |
|
2 |
|
3 |
|
4 |
|
5 | var gulp = require('gulp');
|
6 | var mainBowerFiles = require('gulp-main-bower-files');
|
7 | var gutil = require('gulp-util');
|
8 | var filter = require('gulp-filter');
|
9 | var uglify = require('gulp-uglify');
|
10 | var gulpif = require('gulp-if');
|
11 | var sourcemaps = require('gulp-sourcemaps');
|
12 | var ignore = require('gulp-ignore');
|
13 | var debug = require('gulp-debug');
|
14 | var concat = require('gulp-concat');
|
15 | var gzip = require('gulp-gzip');
|
16 | var flatten = require('gulp-flatten');
|
17 | var merge = require('merge-stream');
|
18 | var _ = require('underscore');
|
19 | var bowerJson = require('./common').bowerJson;
|
20 | var prod = require('./common').prod;
|
21 |
|
22 | console.log('prod mode=' + prod)
|
23 | module.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 |
|
55 | function 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 |
|
87 | function 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 |