Gulp工具的使用

199 阅读3分钟

Gulp的使用方法

Gulp安装

//在 VSCODE 中输入 ctrl + `:打开终端CMD
    //在CMD中输入:
        //npm i gulp -g(全局安装)

创建gulp项目

  • 1,创建目录 gulp_demo(创建项目根目录)
  • 2,cd gulp_demo(进入到项目根目录中)
  • 3,npm init -y(初始化项目)
  • 4,npm i gulp -s(安装本地gulp作为项目依赖)

开启第一个gulp应用程序

1,在gulp_demo的根目录下创建一个:gulpfile.js的文本(文件名固定)
2,引入gulp模块 
        const gulp = require("gulp")
        // 开启一个gulp任务
        // task(task_name,callback):开启任何的方法
        // task_name:任务名称
        // callback:回调函数
        gulp.task("default",done=>{
            // 在回调函数中写入任务代码
            console.log("Hello Gulp!");
            done()
        })
//在终端使用命令:gulp default(任务名称)。
//注意:若你的任务名为“default”,直接gulp就会启动默认任务。

编译sass文件

    1,安装插件
        npm i gulp-sass -s
    2,引入插件模块
        const sass = require("gulp-sass")
    3,任务代码
        gulp.task("sass_to_css",done=>{
            // gulp.src():引入源文件
            // gulp.dest():输入到目标文件
            gulp.src("./src/sass/01.scss") // 引入源文件
            .pipe(sass()) // .scss => .css
            .pipe(gulp.dest("./dist/css/")) // 输入到目标文件
            done()
        })

压缩CSS文件

	1,安装插件    
        npm i gulp-clean-css -s
    2,引入插件
        const cleanCss = require("gulp-clean-css")
    3,任务代码
        gulp.task("cleanCss",done=>{
            gulp.src("./src/sass/*.scss")// 可读流
            .pipe(sass())
            .pipe(cleanCss())
            .pipe(gulp.dest("./dist/css"))// 可写流
            done()
        })
*:通配选择符

修改文件名字插件

 	1,安装插件
        npm i gulp-rename -s
    2,引入插件
        const rename = require("gulp-rename")
    3,任务代码
        gulp.task("rename",done=>{
            gulp.src("./src/sass/*.scss")// 可读流
            .pipe(sass()) // 编译
            .pipe(cleanCss()) // 压缩css
            .pipe(rename({
                //dirname: "main/text/ciao", 目录名
                //basename: "aloha",  路径名
                //prefix: "bonjour-", 前缀名
                suffix:".min",// 后缀名   电视网-新三国第一集-人人美剧.mp4
                extname:".css"// 扩展名
            })) //修改名字
            .pipe(gulp.dest("./dist/css"))// 可写流
            done()
        })
//dirname: "main/text/ciao",
//basename: "aloha",
//prefix: "bonjour-",
//suffix: "-hola",
//extname: ".md"
// ./dist/main/text/ciao/bonjour-aloha-hola.md

压缩JS文件

	1,安装插件
        npm i gulp-uglify -s
    2,引入插件
        const uglify = require("gulp-uglify")
    3,任务代码
        gulp.task("uglify_js",done=>{
            gulp.src("./src/js/big.js")
            .pipe(uglify())
            .pipe(rename("big.min.js"))
            .pipe(gulp.dest("./dist/js"))
            done()
        })

合并JS文件

	1,安装插件
        npm i gulp-concat -s
    2,引入插件
        const concat = require("gulp-concat")
    3,任务代码
        gulp.task("concat_js",done=>{
            gulp.src("./src/js/*.js")
            .pipe(concat("all.js"))
            .pipe(uglify())
            .pipe(gulp.dest("./dist/js"))
            done()
        })

ES6 转 ES5:适用老版本浏览器JS代码

	1,安装插件
        npm i gulp-babel@7 -s   //注意:建议推荐安装7版本毕竟8版本出了事解决不了!
        npm i babel-preset-es2015 -s //依赖
        npm i babel-core -s			//依赖
    2,准备
        在项目的根目录创建: .babelrc 的文件
        在文件中写入
            {
                "presets":["es2015"]
            }
    3,引入插件
        const babel = require("gulp-babel")
    4,任务代码
        gulp.task("es6toes5",done=>{
            gulp.src("./src/js/es6.js")
            .pipe(babel())
            .pipe(rename("es5.js"))
            .pipe(gulp.dest("./dist/js"))
            done()
        })

压缩图片

	1,安装插件
        npm i gulp-imagemin -s
    2,引入插件
        const imagemin = require("gulp-imagemin")
    3,任务代码
        gulp.task("img",(done)=>{
            gulp.src("./src/img/2.jpg")
            .pipe(imagemin())
            .pipe(gulp.dest("./dist/img"))
            done()
        })

热更新服务器

	1,安装插件 
        npm i browser-sync -s
    2,引入插件
        // 创建浏览器同步对象
        const browserSync = require("browser-sync").create()
        // 引入浏览器的reload方法
        const reload = browserSync.reload
    3,任务代码 
    	// 创建浏览器同步对象
        const browserSync = require("browser-sync").create()
        // 引入浏览器的reload方法
        const reload = browserSync.reload
        gulp.task("sync",done=>{
            // 初始化服务器
            browserSync.init({
                server:"./",// 指定服务器的根目录
                // port:8001// 默认端口号:3000
            })
            gulp.watch("./index.html").on("change",reload)
            done()
        })