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 | prod = !process.env.DEV;
|
23 |
|
24 | console.log('prod mode=' + prod)
|
25 | module.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 |
|
57 | function 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 |
|
89 | function 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 |