gulp构建自动化项目

sklhtml sklhtml     2022-10-14     473

关键词:

技术分享图片

‘use strict‘;
var gulp = require(‘gulp‘),
    browserSync = require(‘browser-sync‘).create(),
    SSI = require(‘browsersync-ssi‘),//多浏览器多设备同步&自动刷新
    concat = require(‘gulp-concat‘),//整合文件
    uglify = require(‘gulp-uglify‘), //混淆js   暂时没用到
    minify = require(‘gulp-minify‘), //压缩js
    plumber = require(‘gulp-plumber‘),//错误处理插件plumber
    compass = require(‘gulp-compass‘),    //compass 用来编译sass
    imagemin = require(‘gulp-imagemin‘),//压缩图片
    clean = require(‘gulp-clean‘), //clean 用来删除文件
    zip = require(‘gulp-zip‘),//压缩文件
    runSequence = require(‘gulp-run-sequence‘);//控制task中的串行和并行。这个很重要,它能够严格规定task的执行顺序,否则gulp默认并行,有些时候会产生问题。如先清空再重建文件,可能重建过程中又清空了。

//创建一个名为serve的任务,该任务的内容就是匿名函数中的内容。
gulp.task(‘serve‘, function () {
    //使用browserSync创建服务器,自动打开浏览器并打开./dist文件夹中的文件(默认为index.html)
    browserSync.init({
        server: {
            baseDir: ["./dist"],
            middleware: SSI({
                baseDir: ‘./dist‘,
                ext: ‘.shtml‘,
                version: ‘2.10.0‘
            })
        }
    });
    //监听各个目录的文件,如果有变动则执行相应的任务操作文件
    gulp.watch("app/sass/*.scss", [‘compass‘]);
    gulp.watch("app/script/*.js", [‘js‘]);
    gulp.watch("app/**/*.html", [‘html‘]);
    gulp.watch("app/img/**/*.*", [‘img‘])
    gulp.watch("app/font/*", [‘font‘])
    //如果有任何文件变动,自动刷新浏览器
    gulp.watch("dist/**/*.html").on("change", browserSync.reload);
});

//compass任务,将scss编译为css
gulp.task(‘compass‘, function () {
    //首先取得app/sass下的所有后缀为.scss的文件(**/的意思是包含所有子文件夹)
    return gulp.src(‘app/sass/*.scss‘)
        .pipe(compass({
            //设置生成sourcemap,在调试器中显示样式在scss文件中的位置,便于调试
            sourcemap: ‘true‘,
            //输出格式设置为compressed就不需要压缩css了
            style: ‘compressed‘,
            //文件目录
            css: ‘dist/css‘,
            sass: ‘app/sass‘,
            image: ‘app/images‘
        }))
        //如果有错误输出错误提示
        .on(‘error‘, function (error) {
            // Would like to catch the error here
            console.log(error);
            this.emit(‘end‘);
        })
        //编译后的文件放入dist/stylesheets下
        .pipe(gulp.dest(‘dist/css‘))
        //自动刷新浏览器
        .pipe(browserSync.stream());
});

//js任务,将js压缩后放入dist。该任务要在clean-scripts任务完成后再执行
gulp.task(‘js‘, function () {
    //首先取得app/javascript下的所有后缀为.js的文件(**/的意思是包含所有子文件夹)
    return gulp.src(‘app/script/*.js‘)
    //错误管理模块
        .pipe(plumber())
        //目前没用混淆,不方便调试
        //.pipe(uglify())
        //js压缩
        .pipe(minify())
        //输出到dist/javascript
        .pipe(gulp.dest("dist/js"))
        //自动刷新浏览器
        .pipe(browserSync.stream());
});



//html任务,目前什么都没做。只是单纯的把所有html从开发环境app复制到测试环境dist
gulp.task(‘html‘, function () {
    return gulp.src("app/*.html")
        .pipe(plumber())
        .pipe(gulp.dest("dist/"))
        .pipe(browserSync.stream());
});

// 处理图片
gulp.task(‘img‘, function(){
    return gulp.src(‘app/img/**/*.*‘)
        .pipe(imagemin())
        .pipe(gulp.dest(‘dist/img‘))
        .pipe(browserSync.stream());
});

//publish任务,需要的时候手动执行,将dist中的文件打包压缩放到release中。
gulp.task(‘publish‘, function () {
    //取得dist文件夹中的所有文件
    return gulp.src(‘dist/**/*‘)
    //错误处理模块
        .pipe(plumber())
        //压缩成名为publish.zip的文件
        .pipe(zip(‘publish.zip‘))
        //放入release文件夹
        .pipe(gulp.dest(‘release‘))
});

//js任务,将js压缩后放入dist。该任务要在clean-scripts任务完成后再执行
gulp.task(‘font‘, function () {
    //首先取得app/javascript下的所有后缀为.js的文件(**/的意思是包含所有子文件夹)
    return gulp.src(‘app/font/*‘)
    //错误管理模块
        .pipe(plumber())
        //输出到dist/javascript
        .pipe(gulp.dest("dist/font"))
        //自动刷新浏览器
        .pipe(browserSync.stream());
});


//clean任务:清空dist文件夹,下边重建dist的时候使用
gulp.task(‘clean‘, function () {
    return gulp.src(‘dist/*‘, {read: false})
        .pipe(clean());
});

//redist任务:需要时手动执行,重建dist文件夹:首先清空,然后重新处理所有文件
gulp.task(‘redist‘, function () {
    //先运行clean,然后并行运行html,js,compass
    runSequence(‘clean‘, [‘html‘, ‘js‘, ‘img‘,‘compass‘,‘font‘]);
});

//建立一个名为default的默认任务。当你在gitbash中执行gulp命令的时候,就会
gulp.task(‘default‘, function () {
    //先运行redist,启动服务器
    runSequence(‘redist‘, ‘serve‘);
});

构建初始化项目

npm init

全局安装依赖gulp

npm install gulp -g 

安装依赖

npm install browser-sync  browsersync-ssi gulp gulp-clean gulp-compass gulp-concat gulp-imagemin gulp-minify gulp-minify-css gulp-plumber gulp-run-sequence gulp-sass gulp-uglify gulp-zip plumber --save

按照上图给的目录:构建

dist的文件中的所有都是通过gulp生成,无需操作,只需操作app文件中的就可以。

 

使用gulp构建一个项目

gulp是前端开发过程中自动构建项目的工具,相同作用的还有grunt。构建工具依靠插件能够自动监测文件变化以及完成js/sass/less/html/image/css/coffee等文件的语法检查、合并、重命名、压缩、格式化、浏览器自动刷新、部署文件等功... 查看详情

用gulp构建你的前端项目

...如果还是人工去处理,效率非常之低且还容易出错,于是自动化的处理工具也就必然出现了。就像后端我们一般用maven管理项目,那么前端gulp是个不错的选择。 什么是gulp是一个基于Node.js流、Javascript语法的快速构建前端项目... 查看详情

webpack+gulp实现自动构建部署

项目结构说明.├──gulpfile.js#gulp任务配置├──mock/#假数据文件├──package.json#项目配置├──README.md#项目说明├──src#源码目录│  ├──pageA.html#入口文件a│  ├──pageB.html#入口文件b│  ├──page... 查看详情

gulp入门学习

一、gulp简介   gulp是一个自动化构建工具。在开发过工程中,能够使用gulp对项目进行自动构建,大大提高工作效率。二、安装gulp   在安装gulp之前先要确认已经正确安装了node.js,然后在项目根目录下安装gul... 查看详情

scales小谈gulp

---恢复内容开始--- gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。外网:http://gulpjs.com/中文官网:http://www.gulpjs.com.cn/易于使用通过代码优于配置的策略,Gulp让简单的任务简单,复杂的任... 查看详情

express+gulp构建项目项目目录结构

...架,它可以让我们快速开发出web引用。而gulp是一种自动构建工具,非常强大,有了它,能帮我们完成很多繁琐的工作,例如,静态文件的压缩,为静态文件加上哈希值的命名以防止缓存等等。环境安装若要使用express框架和gulp,... 查看详情

gulp自动化构建的基本使用(代码片段)

...友喜欢,可以关注、收藏、点赞下本博主的文章。Gulp用自动化构建工具增强你的工作流程!gulp将开发流程中让人痛苦或耗时的任务自动化,从而减少你所浪费的时间、创造更大价值。基本使用安装gulpnpmigulp-D在项目根目录下创... 查看详情

gulp构建前端自动化工作流之:常用插件介绍及使用

在对Gulp有了一个初步的了解之后,我们开始构建一个较为完整的Gulp开发环境。本文主要分为6个段落:1.构建项目目录结构(DirectoryStructureBuild)2.插件介绍及使用方法(Tasksanddependencies)3.扩展优化(Extend&OptimizeTask)4.其他插... 查看详情

gulp初探

...gulp的简介       基于node.js流的自动化构建工具,可以快速构建项目并减少频繁的I/0操作,还可以利用gulp插件完成各种自动化任务。gulp是基于 node.js 的自动任务运行器,它能自动化地完成javascript... 查看详情

gulp

...?gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,不仅可以很愉快的编写代码,而且大大... 查看详情

gulp

...js.com.cn/)gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;大大提高我们的工作效率。gulp安装npminstall-ggulp... 查看详情

gulp

gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器gulp是基于Nodejs的自动任务运行器,她能自动化地完成javascript/coffee/sass/less/html/image/css等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署... 查看详情

gulp

简介:gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,我们不仅可以很愉快的编写代码,而且... 查看详情

gulp

简介:gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,我们不仅可以很愉快的编写代码,而且... 查看详情

gulp是什么?

... gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器;它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用它,不仅可以很愉快的编写代码,而且大大... 查看详情

gulp(代码片段)

...ystemgulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,不仅可以很愉快的编写代码,而且大大... 查看详情

gulp入门教程

...   gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用它,我们不仅可以很愉快的编写代码,而且... 查看详情

gulp

...Gulp简介gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器;她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;使用她,我们不仅可以很愉快的编写代 查看详情