|
var gulp = require('gulp');
var connect = require('gulp-connect');
var proxy = require('http-proxy-middleware');
var inject = require('gulp-inject');
var ngAnnotate = require('gulp-ng-annotate');
var stripDebug = require('gulp-strip-debug');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var imagemin = require('gulp-imagemin');
var htmlmin = require('gulp-htmlmin');
var runSequence = require('run-sequence');
var del = require('del');
var md5 = require('gulp-md5');
var minifyCss = require('gulp-minify-css');
var html2js = require('gulp-html2js');
var rename = require('gulp-rename');
var gzip = require('gulp-gzip');
gulp.task(
'webserver', function () { connect.server({
root:
'app', livereload:
true, port:
4200, middleware:
function (connect, opt) {return [ proxy(
'/questionnaire', { target:
'http://192.168.100.124:8081', changeOrigin:
true })
// proxy('/Questionnaire',{ // target: 'http://192.168.202.202:3306/',
// changeOrigin:true
// })
];
}
});
});
var srcPath = {
baseTemplate: './app/index-origin.html',
lib: {
js: [
"./app/lib/angular/angular.js",
"./app/lib/jquery.min.js",
"./app/lib/bootstrap/dist/js/bootstrap.js",
"./app/lib/moment/moment.js",
"./app/lib/angular-ui-router/release/angular-ui-router.js",
"./app/lib/angular-bootstrap/ui-bootstrap-tpls.js",
"./app/lib/angular-bootstrap/angular-locale_zh-cn.js",
"./app/lib/angular-breadcrumb/dist/angular-breadcrumb.js",
"./app/lib/angular-md5/angular-md5.min.js",
"./app/lib/angular-breadcrumb/dist/angular-breadcrumb.js",
"./app/lib/headroom.min.js",
"./app/lib/highlight.min.js",
"./app/lib/jquery.smoove.js",
"./app/lib/aos.js",
"./app/lib/fullPage.min.js",
"./app/lib/jquery.SuperSlide.2.1.1.js"
],
css: [
"./app/css/bootstrap.css",
"./app/css/aos.css",
"./app/css/iconfont.css"
]
},
application: {
js: ['./app/js/app.js', './app/js/**/*.js'],
css: ['./app/css/css.css'],
template: ['./app/templates/**/*.html']
},
images: ['./app/img/**.*'],
fonts: ['./app/fonts/*']
};
gulp.task('inject', function () {
var libs = gulp.src(srcPath.lib.js.concat(srcPath.lib.css), {base: './app', read: false});
var application = gulp.src(srcPath.application.js.concat(srcPath.application.css), {base: './app', read: false});
gulp.src('./app/index-origin.html')
.pipe(inject(libs, {relative: true, name: 'lib'}))
.pipe(inject(application, {
relative: true,
name: 'application'
})
)
.pipe(rename('index.html'))
.pipe(gulp.dest('./app'))
});
gulp.task('html', function () {
gulp.src('./app/templates/*.html')
.pipe(connect.reload());
});
gulp.task('js', function () {
gulp.src('./app/js/**/*.js')
.pipe(connect.reload());
});
gulp.task('watch', function () {
gulp.watch(['./app/templates/*.html'], ['html']);
gulp.watch(['./app/js/**/*.js'], ['js']);
});
gulp.task('default', ['inject', 'webserver', 'watch']);
//
// 以下为生产构建配置
//
var configuration = {
html: {
removeComments: true,
removeCommentsFromCDATA: true,
collapseWhitespace: true,
conservativeCollapse: true,
removeScriptTypeAttributes: true
},
inject: {
lib: {
name: 'lib',
relative: true,
ignorePath: '../build'
},
app: {
name: 'application',
relative: true,
ignorePath: '../build/'
},
template: {
name: 'template',
relative: true,
ignorePath: '../build/'
}
},
html2js: {
base: 'app/',
name: 'app',
useStrict: true
},
gzip: {
threshold: 512,
level: 9,
memLevel: 2
}
};
gulp.task('clean', function (done) {
del('build/', done);
});
gulp.task('image', function () {
gulp.src(srcPath.images)
// .pipe(imagemin())
.pipe(gulp.dest('build/img/'));
});
gulp.task('fonts', function () {
gulp.src(srcPath.fonts).pipe(gulp.dest('build/fonts/'));
});
gulp.task('src-inject-build', function () {
var honeyLibScript
, honeyLibStylesheet
, honeyApplicationTemplate
, honeyApplicationScript
, honeyApplicationStylesheet;
honeyLibScript =
gulp.src(srcPath.lib.js)
.pipe(ngAnnotate())
.pipe(concat('honey_lib_script.js'))
.pipe(uglify())
.pipe(md5(12))
.pipe(rename({extname: '.min.js'}))
.pipe(gulp.dest('./build/js/'));
honeyLibStylesheet =
gulp.src(srcPath.lib.css)
.pipe(concat('honey_lib_stylesheet.css'))
.pipe(minifyCss())
.pipe(md5(12))
.pipe(rename({extname: '.min.css'}))
.pipe(gulp.dest('./build/css/'));
honeyApplicationScript =
gulp.src(srcPath.application.js)
.pipe(ngAnnotate())
.pipe(concat('honey_application_script.js', {newLine: ';'}))
.pipe(stripDebug())
.pipe(uglify())
.pipe(md5(12))
.pipe(rename({extname: '.min.js'}))
.pipe(gulp.dest('./build/js/'));
honeyApplicationStylesheet =
gulp.src(srcPath.application.css)
.pipe(concat('honey_application_stylesheet.css'))
.pipe(minifyCss())
.pipe(md5(12))
.pipe(rename({extname: '.min.css'}))
.pipe(gulp.dest('./build/css/'));
honeyApplicationTemplate =
gulp.src(srcPath.application.template)
.pipe(htmlmin(configuration.html))
.pipe(html2js('honey_template_script.js', configuration.html2js))
.pipe(uglify())
.pipe(md5(10))
.pipe(rename({extname: '.min.js'}))
.pipe(gulp.dest('./build/js/'));
gulp.src(srcPath.baseTemplate)
.pipe(inject(honeyLibScript, configuration.inject.lib))
.pipe(inject(honeyLibStylesheet, configuration.inject.lib))
.pipe(inject(honeyApplicationScript, configuration.inject.app))
.pipe(inject(honeyApplicationStylesheet, configuration.inject.app))
.pipe(inject(honeyApplicationTemplate, configuration.inject.template))
// .pipe(htmlmin(configuration.html))
.pipe(rename({
basename: 'index'
}))
.pipe(gulp.dest('./build/'));
});
gulp.task('build', function () {
runSequence(['image', 'fonts', 'src-inject-build']);
}); |
|