1 | var gulp = require('gulp');
|
2 |
|
3 | var imageop = require('gulp-image-optimization');
|
4 | var less = require('gulp-less');
|
5 | var concat = require('gulp-concat');
|
6 | var LessPluginAutoPrefix = require('less-plugin-autoprefix'),
|
7 | autoprefix = new LessPluginAutoPrefix({});
|
8 | var minifyCss = require('gulp-minify-css');
|
9 |
|
10 | var buffer = require('vinyl-buffer');
|
11 | var uglify = require('gulp-uglify');
|
12 | var browserify = require('browserify');
|
13 | var source = require('vinyl-source-stream');
|
14 |
|
15 |
|
16 | const blogJSON = require('./src/blog.config.json');
|
17 | const templateConfigJSON = require('./src/templates/' +
|
18 | blogJSON['template'] + '/pp.config.json');
|
19 |
|
20 | const paths = {
|
21 | src: './src',
|
22 | dist: './dist',
|
23 | images: ['./src/assets/imgs/*.png', './src/assets/imgs/*.jpg',
|
24 | './src/assets/imgs/*.jpeg', './src/assets/imgs/*.gif'],
|
25 | favicon: './src/assets/favicon/*.*',
|
26 | js: './src/templates/' +
|
27 | templateConfigJSON['name'] + '/' +
|
28 | templateConfigJSON['build-path']['entry-js'],
|
29 | styles: './src/templates/' +
|
30 | templateConfigJSON['name'] + '/' +
|
31 | templateConfigJSON['build-path']['entry-styles'],
|
32 | libs: './src/templates/' +
|
33 | templateConfigJSON['name'] + '/' +
|
34 | templateConfigJSON['build-path']['libs']
|
35 | };
|
36 |
|
37 |
|
38 | gulp.task('imgs', function(cb) {
|
39 | gulp.src(paths.images)
|
40 | .pipe(imageop({
|
41 | optimizationLevel: 3,
|
42 | progressive: true,
|
43 | interlaced: true
|
44 | }))
|
45 | .pipe(gulp.dest(paths.dist))
|
46 | .on('end', cb)
|
47 | .on('error', function(err) {
|
48 | throw err;
|
49 | });
|
50 | });
|
51 |
|
52 | gulp.task('favicon', function(cb) {
|
53 | gulp.src(paths.favicon)
|
54 | .pipe(gulp.dest(paths.dist + '/favicon'))
|
55 | .on('end', cb)
|
56 | .on('error', function(err) {
|
57 | throw err;
|
58 | });
|
59 | });
|
60 |
|
61 | gulp.task('js', function() {
|
62 | return browserify(paths.js)
|
63 | .bundle()
|
64 | .pipe(source('main.js'))
|
65 | .pipe(buffer())
|
66 | .pipe(uglify())
|
67 | .pipe(gulp.dest(paths.dist));
|
68 | });
|
69 |
|
70 |
|
71 | gulp.task('styles', function(cb) {
|
72 | gulp.src(paths.styles)
|
73 | .pipe(less({
|
74 | plugins: [autoprefix]
|
75 | }))
|
76 | .pipe(concat('main.css'))
|
77 | .pipe(minifyCss())
|
78 | .pipe(gulp.dest(paths.dist))
|
79 | .on('end', cb)
|
80 | .on('error', function(err) {
|
81 | throw err;
|
82 | });
|
83 | });
|
84 |
|
85 | gulp.task('libs', function(cb) {
|
86 | gulp.src(paths.libs)
|
87 | .pipe(gulp.dest(paths.dist))
|
88 | .on('end', cb)
|
89 | .on('error', function(err) {
|
90 | throw err;
|
91 | });
|
92 | });
|
93 |
|
94 | gulp.task('default', ['imgs', 'favicon', 'js', 'styles', 'libs']); |
\ | No newline at end of file |