1 Star 0 Fork 0

李帅醒Plus/热点新闻

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
gulpfile.js 6.32 KB
一键复制 编辑 原始数据 按行查看 历史
李帅醒Plus 提交于 2018-04-20 19:08 . first commit
/*
* @Author: Marte
* @Date: 2018-03-09 17:40:56
* @Last Modified by: Marte
* @Last Modified time: 2018-04-20 18:35:00
*/
var gulp = require('gulp'); // 引入模块
var browserSync = require("browser-sync"); // 实现web服务器,并自动刷新
reload = browserSync.reload;
var proxyMiddleware = require('http-proxy-middleware'); // 中间件解决跨域
var sass = require('gulp-sass'); // sass
var runSequence = require('run-sequence'); //任务顺序
var cssminify = require('gulp-clean-css'); // 压缩css
var minifyHtml = require('gulp-minify-html'); // 压缩css
var uglify = require('gulp-uglify'); // 压缩js
var concat = require('gulp-concat'); // 合并
var imagemin = require('gulp-imagemin'); // 压缩图片
var babel = require('gulp-babel'); // Babel是一个广泛使用的ES6转码器
var autoprefixer = require('gulp-autoprefixer');// 浏览器版本自动处理浏览器前缀
var rename = require('gulp-rename'); // 修改文件名工具
var browserify = require('browserify'); // 模块化工具
var babelify = require('babelify');
var md5 = require("gulp-md5-plus"); // 实现文件名添加MD5并替换原有链接
var del = require('del'); // 删除文件
var source = require('vinyl-source-stream'); // 将Browserify的bundle()的输出转换为Gulp可用的vinyl(一种虚拟文件格式)流
var config = {
devPath: "./src",
buildPath: "./dist"
}
// gulp.task -- 定义任务
// gulp.src -- 找到需要执行任务的文件
// gulp.dest -- 执行任务的文件的去处
// gulp.wacth --观察文件是否发生变化
gulp.task('copyHtml', function(){ //拷贝文件
return gulp.src(config.devPath + '/*/*.html') // gulp.src(config.devPath + '/*/*.html')整个文件夹都会过去
.pipe(minifyHtml({
removeComments: true, //清除HTML注释
collapseWhitespace: true, //压缩HTML
collapseBooleanAttributes: true, //省略布尔属性的值 <input checked="true"/> ==> <input />
removeEmptyAttributes: true, //删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: false, //删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: false, //删除<style>和<link>的type="text/css"
minifyJS: true, //压缩页面JS
minifyCSS: true //压缩页面CSS
}))
.pipe(gulp.dest(config.buildPath))
})
gulp.task('imagemin', function(){ // 压缩图片
return gulp.src(config.devPath + '/img/*')
.pipe(imagemin())
.pipe(gulp.dest(config.buildPath + '/img'))
})
// 编译并压缩js
gulp.task('libJs', function(){
return gulp.src(['./src/js/ydui.flexible.js', './src/js/jquery-3.1.1.min.js','./src/js/jquery.lazyload.js','./src/js/template-web.js', './src/js/mescroll.min.js'])
// .pipe(babel({
// presets: ['es2015'],
// plugins: ["transform-runtime"]
// }))
.pipe(uglify())
.pipe(concat('lib.min.js'))
// .pipe(md5(10 ,[config.buildPath + '/html/index.html', config.buildPath + '/html/about.html'],{
// dirLevel : 1,
// mappingFile: 'manifest.json',
// connector: '.'
// }))
.pipe(gulp.dest(config.buildPath + '/js'))
})
// 编译并压缩js
gulp.task('indexJs', function(){
return gulp.src(['./src/js/index.js'])
.pipe(rename('index.min.js'))
.pipe(babel({
presets: ['es2015']
}))
.pipe(uglify())
.pipe(gulp.dest(config.buildPath + '/js'))
})
gulp.task('style', function (){
return gulp.src([config.devPath + '/css/*.scss', config.devPath + '/css/*.css']) //在进行 sass编译时,文件名必须为.scss
.pipe(sass().on('error', sass.logError)) // 对样式文件进行编译,error为打印错误事件
.pipe(cssminify()) // 格式化样式代码-去空格,合并相同的样式
.pipe(autoprefixer({ // 兼容模式
browsers: ['last 2 versions'],
cascade: false
}))
.pipe(concat('lib.min.css')) // 对样式文件进行编译
// .pipe(md5(10 ,[config.buildPath + '/html/index.html', config.buildPath + '/html/about.html'],{
// dirLevel : 1,
// mappingFile: 'manifest.json',
// connector: '.'
// }))
.pipe(gulp.dest(config.buildPath + '/css')) // 生成到根目录的dest文件下
.pipe(browserSync.stream()) // 修改自动刷新
});
gulp.task('script', ['indexJs', 'libJs'], function(){
console.log('js')
})
// 监听文件是否发生变化
gulp.task('watch', function(){
gulp.watch(config.devPath + "/page/*.html", ['copyHtml']).on('change', reload);
gulp.watch(config.devPath + "/js/*.js", ['script']).on('change', reload); // 修改自动刷新
gulp.watch(config.devPath + "/img/*", ['imagemin']).on('change', reload);
gulp.watch(config.devPath + "/css/*.scss", ['style']);
gulp.watch(config.devPath + "/css/*.css", ['style']);
})
gulp.task('clean', function(cb) {
return del(['manifest.json', config.buildPath + '/css', config.buildPath + '/js', config.buildPath + '/img'], cb)
});
// 静态服务器
// gulp.task('browserSync', function() {
// browserSync.init({
// proxy: "https://movie.douban.com",
// server: {
// baseDir: config.buildPath, // 设置根目录
// index: "html/index.html" // 默认指向页面
// }
// });
// });
gulp.task('browserSync', function() {
// 代理配置, 实现环境切换
var middleware = [proxyMiddleware(['/j/search_subjects'], {target: 'https://movie.douban.com', changeOrigin: true}),
proxyMiddleware(['/api/mobile/index.php'], {target: 'http://bbs.smartisan.com', changeOrigin: true})]
browserSync({
server: {
baseDir: config.buildPath,
index: 'page/news.html',
middleware: middleware
}
});
});
gulp.task('default', function(cb) {
runSequence(
'clean', // 第一步:清理目标目录
['copyHtml', 'script', 'style', 'imagemin','browserSync'], // 第二步:打包
'watch', // 第三步:监控
cb
);
});
//执行打包发布任务
gulp.task('product', ['clean', 'copyHtml', 'libJs', 'style', 'imagemin'], function () {
console.log('打包完毕')
});
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wcslb/jinritoutiao.git
git@gitee.com:wcslb/jinritoutiao.git
wcslb
jinritoutiao
热点新闻
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385