关于gulpfile文件: 直接上代码吧!!

/*!
* gulp
* $ npm install gulp gulp-ruby-sass gulp-cached gulp-uglify gulp-rename gulp-concat gulp-notify gulp-filter gulp-jshint gulp-rev-append gulp-cssnano gulp-imagemin browser-sync gulp-file-include gulp-autoprefixer del --save-dev
*/ // Load plugins
var gulp = require('gulp'), // 必须先引入gulp插件
del = require('del'), // 文件删除
sass = require('gulp-ruby-sass'), // sass 编译
cached = require('gulp-cached'), // 缓存当前任务中的文件,只让已修改的文件通过管道
uglify = require('gulp-uglify'), // js 压缩
rename = require('gulp-rename'), // 重命名
concat = require('gulp-concat'), // 合并文件
notify = require('gulp-notify'), // 相当于 console.log()
filter = require('gulp-filter'), // 过滤筛选指定文件
jshint = require('gulp-jshint'), // js 语法校验
rev = require('gulp-rev-append'), // 插入文件指纹(MD5)
cssnano = require('gulp-cssnano'), // CSS 压缩
imagemin = require('gulp-imagemin'), // 图片优化
browserSync = require('browser-sync'), // 保存自动刷新
fileinclude = require('gulp-file-include'), // 可以 include html 文件
autoprefixer = require('gulp-autoprefixer'); // 添加 CSS 浏览器前缀 // sass
gulp.task('sass', function() {
return sass('src/sass/**/*.scss', {style: 'expanded'}) // 传入 sass 目录及子目录下的所有 .scss 文件生成文件流通过管道并设置输出格式
.pipe(cached('sass')) // 缓存传入文件,只让已修改的文件通过管道(第一次执行是全部通过,因为还没有记录缓存)
.pipe(autoprefixer('last 6 version')) // 添加 CSS 浏览器前缀,兼容最新的5个版本
.pipe(gulp.dest('dist/css')) // 输出到 dist/css 目录下(不影响此时管道里的文件流)
.pipe(rename({suffix: '.min'})) // 对管道里的文件流添加 .min 的重命名
.pipe(cssnano()) // 压缩 CSS
.pipe(gulp.dest('dist/css')) // 输出到 dist/css 目录下,此时每个文件都有压缩(*.min.css)和未压缩(*.css)两个版本
}); // css (拷贝 *.min.css,常规 CSS 则输出压缩与未压缩两个版本)
gulp.task('css', function() {
return gulp.src('src/css/**/*.css')
.pipe(cached('css'))
.pipe(gulp.dest('dist/css')) // 把管道里的所有文件输出到 dist/css 目录
.pipe(filter(['**/*', '!**/*.min.css'])) // 筛选出管道中的非 *.min.css 文件
.pipe(autoprefixer('last 6 version'))
.pipe(gulp.dest('dist/css')) // 把处理过的 css 输出到 dist/css 目录
.pipe(rename({suffix: '.min'}))
.pipe(cssnano())
.pipe(gulp.dest('dist/css'))
}); // styleReload (结合 watch 任务,无刷新CSS注入)
gulp.task('styleReload', ['sass', 'css'], function() {
return gulp.src(['dist/css/**/*.css'])
.pipe(cached('style'))
.pipe(browserSync.reload({stream: true})); // 使用无刷新 browserSync 注入 CSS
}); // script (拷贝 *.min.js,常规 js 则输出压缩与未压缩两个版本)
gulp.task('script', function() {
return gulp.src(['src/js/**/*.js'])
.pipe(cached('script'))
.pipe(gulp.dest('dist/js'))
.pipe(filter(['**/*', '!**/*.min.js'])) // 筛选出管道中的非 *.min.js 文件
// .pipe(jshint('.jshintrc')) // js的校验与合并,根据需要开启
// .pipe(jshint.reporter('default'))
// .pipe(concat('main.js'))
// .pipe(gulp.dest('dist/js'))
.pipe(rename({suffix: '.min'}))
.pipe(uglify())
.pipe(gulp.dest('dist/js'))
}); // image
gulp.task('image', function() {
return gulp.src('src/img/**/*.{jpg,jpeg,png,gif}')
.pipe(cached('image'))
.pipe(imagemin({optimizationLevel: 3, progressive: true, interlaced: true, multipass: true}))
// 取值范围:0-7(优化等级),是否无损压缩jpg图片,是否隔行扫描gif进行渲染,是否多次优化svg直到完全优化
.pipe(gulp.dest('dist/img'))
}); // html 编译 html 文件并复制字体
gulp.task('html', function () {
return gulp.src('src/*.html')
.pipe(fileinclude()) // include html
.pipe(rev()) // 生成并插入 MD5
.pipe(gulp.dest('dist/'))
}); // clean 清空 dist 目录
gulp.task('clean', function() {
return del('dist/**/*');
}); // build,关连执行全部编译任务
gulp.task('build', ['sass', 'css', 'script', 'image'], function () {
gulp.start('html');
}); // default 默认任务,依赖清空任务
gulp.task('default', ['clean'], function() {
gulp.start('build');
}); // watch 开启本地服务器并监听
gulp.task('watch', function() {
browserSync.init({
server: {
baseDir: 'dist' // 在 dist 目录下启动本地服务器环境,自动启动默认浏览器
}
}); // 监控 SASS 文件,有变动则执行CSS注入
gulp.watch('src/sass/**/*.scss', ['styleReload']);
// 监控 CSS 文件,有变动则执行CSS注入
gulp.watch('src/css/**/*.css', ['styleReload']);
// 监控 js 文件,有变动则执行 script 任务
gulp.watch('src/js/**/*.js', ['script']);
// 监控图片文件,有变动则执行 image 任务
gulp.watch('src/img/**/*', ['image']);
// 监控 html 文件,有变动则执行 html 任务
gulp.watch('src/**/*.html', ['html']);
// 监控 dist 目录下除 css 目录以外的变动(如js,图片等),则自动刷新页面
gulp.watch(['dist/**/*', '!dist/css/**/*']).on('change', browserSync.reload); });

gulp-gulpfile.js语法说明的更多相关文章

  1. gulp的使用(二)之gulpfile.js文件的配置

    Gulpfile.js是什么文件: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她, ...

  2. gulp打包js多个文件夹并压缩混淆,编译ES6语法,及多个import依赖由一个入口打包成一个cdn

    感觉和webpack的步骤差不多 首先安装gulp:参考上一篇 安装完之后 新建一个文件目录起名 在当前目录下打开cmd 执行:npm init 创建package.json文件 然后安装第一个插件g ...

  3. gulp 图片、样式、js、实时刷新等压缩gulpfile.js文件各个模块

    1.压缩tinypng图片   gulp-tinypng-nokey,但不压缩gif格式(另外一个gulp-imagemin压缩率不高,可以压缩gif格式) // 获取 gulp var gulp = ...

  4. gulp配置文件(gulpfile.js)

    需要安装的插件 "gulp": "^3.9.1","gulp-clean": "^0.3.2","gulp-c ...

  5. gulp 压缩js,css

    最近做的前端项目中发现引用的js包太多,导致页面加载时反应很慢,所以首先想到的是将js和css压缩,提高加载速度. 我们先来看看抓到的当前页面响应时间: 页面异步加载,需要响应时间 7.41秒,这也太 ...

  6. 《Gulp 入门指南》 : 使用 gulp 压缩 JS

    <Gulp 入门指南> : 使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 访问论坛获取帮助 压缩 js 代码可降低 js 文件大小,提高页面打 ...

  7. JS语法转换-ES6转ES5

    1.使用Babel转码 全局安装 npm install -g babel-cli 布局安装 npm install -g babel-cli --save-dev Babel的配置文件是.babel ...

  8. gulpfile.js文档

    gulp watch 实现监听不仅需要package.json文档,还需要gulpfile.js文档.否则无法实现. 1.gulp的安装 1.1 首先必须先安装node.js.这个可以参考之前的博客& ...

  9. 使用 gulp 压缩 JS

    使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 压缩 js 代码可降低 js 文件大小,提高页面打开速度.在不利用 gulp 时我们需要通过各种工具手动完成 ...

随机推荐

  1. 利用hibernate与struts框架制作简单注册界面

    一:配置hibernate 1.导包 hibernate包和jdbc连接mysql数据库的包 2.实用工具生成hibernate配置文件和映射文件 3.做好hibernateUtil生成session ...

  2. BZOJ-1798 维护序列

    线段树.支持区间加.区间乘.区间查询和. 标记下移还有取模要注意. var n,p,q,i,s,t:longint; a:int64; num,n1,n2,n3:array[0..500000] of ...

  3. P1266 速度限制 (最短路,图论)

    题目链接 Solution 在最短路转移的时候在队列或者堆中记录状态为 \(f[u][v]\) 代表上一个节点为 \(u\) ,速度为 \(v\) . 然后按部就班转移即可... Code #incl ...

  4. Python Base Five

    // 8 day(2016/8/11) 38. In python , it is oop. class Baskball:         def setName(self, name):      ...

  5. TransactionProxyFactoryBean 配置问题

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  6. Wmap5 测试80端口 Your port 80 is actually used by :Server: Microsoft-HTTPAPI/2.0

    问题:win7系统! 在wamp5的apache启动不了: 目录下点击[测试80端口]的时候提示:Your port 80 is actually used by : Server: Microsof ...

  7. google jib容器打包工具

    简介 Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供. 通过 Jib,Java 开发者可以使用他们 ...

  8. Linq技巧2——限制返回数据中的继承类型

    假如有像下面这样的一个模型, 怎样在查询时仅仅需要的Cars呢? 这样的几个继承关系的实体中,查询时Where 条件可以加入OfType<SubType>(),你可以这样来写: var o ...

  9. npm 安装出现 UNMET DEPENDENCY 的解决方案

    npm imuzhicloud@0.2.2 E:\com\muzhicloud_make_web+-- UNMET PEER DEPENDENCY react@15.4.2+-- react-dnd@ ...

  10. 用jQuery File Upload实现简单的文件上传

    FORM中的代码: {# file_path #} <div class="form-group"> <label class="control-lab ...