-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
127 lines (108 loc) · 3.82 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
require('shelljs/global');
var argv = process.argv;
var projectNameFromArgv = argv[4];
//当为开发环境时需要做些配置
if(argv[2] == 'serve') {
require('./setting/setting')(projectNameFromArgv);
}
var gulp = require('gulp');
var nodemon = require('gulp-nodemon');
var sass = require('gulp-ruby-sass');
var autoprefixer = require('gulp-autoprefixer');
var livereload = require('gulp-livereload');
var uglify = require('gulp-uglify');
var cssmin = require('gulp-cssmin');
var imagemin = require('gulp-imagemin');
var del = require('del');
var replace = require('gulp-replace');
var md5 = require("gulp-md5-plus");
var copy = require('gulp-copy');
var sequence = require('gulp-sequence');
var path = require('path');
var projectConfig = require('./config/projectConfig');
var baseConfig = require('./config/baseConfig');
var projectName = projectNameFromArgv || projectConfig.currentProject;
var CDN_PATH = baseConfig.CDN_PATH;
var filePath = {
srcName: 'src',
destName: 'dest',
srcSass: 'public/' + projectName + '/sass/*.scss',
srcJS: 'public/' + projectName + '/js/**/*.js',
srcEjs: 'views/' + projectName + 'View/*.ejs',
srcTpl: 'views/' + projectName + 'View/template/*.ejs',
srcImg: 'public/' + projectName + '/img/*',
srcCss: 'public/' + projectName + '/css/**/*.css',
srcCssDir: 'public/' + projectName + '/css',
destCss: 'dest/' + projectName + '/css',
destJS: 'dest/' + projectName + '/js',
destImg: 'dest/' + projectName + '/img',
configPath: 'config/projectConfig.js'
};
var md5TargetPath = filePath.destName + '/' + projectName + 'View/**/*.ejs';
gulp.task('styles', function() {
return sass(filePath.srcSass)
.pipe(autoprefixer('last 2 version'))
.pipe(gulp.dest(filePath.srcCssDir))
.pipe(livereload());
});
gulp.task('scripts', function() {
return gulp.src(filePath.srcJS)
.pipe(livereload());
});
gulp.task('ejs',function(){
return gulp.src(filePath.srcEjs)
.pipe(livereload());
});
gulp.task('watch', function() {
livereload.listen();
gulp.watch(filePath.srcSass, ['styles']);
gulp.watch(filePath.srcJS, ['scripts']);
gulp.watch(filePath.srcEjs, ['ejs']);
});
gulp.task('server',function(){
nodemon({
'script': './bin/www',
'ignore': filePath.srcJS
});
});
//将页面中的相对路径替换为绝对路径
gulp.task('replace', function(){
return gulp.src([path.join(__dirname, 'views/' + projectName + 'View/**/*.ejs')])
.pipe(replace(/\.\.\/\.\.\//g, CDN_PATH))
.pipe(gulp.dest(filePath.destName + '/' + projectName + 'View/'));
});
gulp.task('build_js', function () {
return gulp.src(filePath.srcJS)
.pipe(replace(/\.\.\//g, CDN_PATH + projectName + '/'))
.pipe(md5(6,md5TargetPath))
.pipe(uglify())
.pipe(gulp.dest(filePath.destJS))
});
gulp.task('build_css', function () {
return gulp.src(filePath.srcCss)
.pipe(replace(/\.\.\//g, CDN_PATH + projectName + '/'))
.pipe(md5(6,md5TargetPath))
.pipe(cssmin())
.pipe(gulp.dest(filePath.destCss));
});
gulp.task('build_img', function () {
return gulp.src(filePath.srcImg)
// .pipe(md5(6,md5TargetPath))
.pipe(imagemin())
.pipe(gulp.dest(filePath.destImg))
});
gulp.task('copy', function () {
return gulp.src([filePath.configPath])
.pipe(copy(filePath.destName + '/' + projectName + 'View/', { prefix: 1 }));
});
gulp.task('clean', function () {
del.sync([filePath.destName + '/**']);
});
gulp.task('serve', ['server','watch']);
// gulp.task('build', ['clean','replace','build_js','build_css','build_img','copy']);
gulp.task('build', function(cb) {
sequence(
['clean','replace'],
['build_js','build_css','build_img','copy'],
cb);
});