【gulp】gulp 的基本使用

gulp 是一个基于node的自动化打包构建工具,前端开发者可以使用它来处理常见任务:

创建项目

进入项目

    npm init -y
    npm i gulp -g  (使用命令 gulp)
    npm i gulp -D   #     开发依赖(前端工具都是开发依赖  本地安装 代码加载模块)
    npm i axios   #npm i axios --save         项目依赖-线上项目依赖(线上的代码需要用到 比如 axios)


    #dev 开发环境   源代码 - 使用一个工具 gulp把代码进行压缩
    #test 测试环境
    #生产环境 线上   css,js,html 压缩   不需要使用gulp


   

项目根目录中创建 gulpfile.js

const gulp = require('gulp');
gulp.task('tname',function(cb){
	//任务代码
	cb()
})
在终端中:gulp tname

gulp.task('tname',function(){
    //任务代码
    console.log('t1')
    console.log('t2')
    // 1-获取对应的文件
    gulp.src('src/js/*.js') //文件流
    // 2-管道里 做一个处理    压缩处理 安装插件
    // .pipe(调用一个插件)

    // 3-管道存放到另一个地方
    .pipe(gulp.dest('dist/js'))

})


安装编译压缩 scss 插件


npm install sass gulp-sass --save-dev
    
var sass = require('gulp-sass')(require('sass'))
// 定义一个任务
gulp.task('scss', function (cb) {
    //任务代码
    console.log('任务代码scss');
    gulp.src('./src/scss/**/*.scss')//获取文件
        .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))//通过gulp插件处理文件
        .pipe(gulp.dest('./src/css'))//把处理之后的文件 放到 dist/js下
        .pipe(gulp.dest('./dist/css'))//把处理之后的文件 放到 dist/js下
    cb()
})

gulp.task('w', function (cb) {
    // 监听路径下scss文件,一旦文件有变化,执行scss任务
    // 
    console.log('开始监听scss文件的变化');
    gulp.watch('./src/scss/**/*.scss', gulp.parallel(['scss']));
    cb()
})

安装压缩 js 插件

 npm i gulp-uglify -D

在文件中定义任务

var gulp = require("gulp");
var uglify = require("gulp-uglify");
gulp.task("js", function () {
  console.log("js任务代码");
  gulp.src("./src/js/*.js").pipe(uglify()).pipe(gulp.dest("./dist/js"));
});

在终端中输入 gulp js 执行任务

编译js 高版本js转低版本

npm install --save-dev gulp-babel @babel/core @babel/preset-env


const babel = require('gulp-babel');
gulp.task('babel', () =>
    gulp.src('src/js/**/*.js')
        .pipe(babel({
            presets: ['@babel/env']
        }))
        .pipe(gulp.dest('dist/js'))
);
// 压缩js   npm install --save-dev gulp-uglify


var uglify = require('gulp-uglify');
gulp.task('compress',function(){
    // 获取js文件
    gulp.src('./src/js/**/*.js')
    // 转译插件 高版本js 转出 es5
    .pipe(babel({
        presets: ['@babel/env']
    }))
    // es5代码 压缩
    .pipe(uglify())
    // 输出到 dist
    .pipe(gulp.dest('./dist/js'))
})

npm install gulp-concat -D

// 合并js
var concat = require('gulp-concat');
gulp.task('concat', function (cb) {
    // 获取要合并的js文件
    gulp.src((['./src/js/login/login-a.js', './src/js/login/login-b.js']))
        // 合并
        .pipe(concat('login.js'))
        // 输出
        .pipe(gulp.dest('./src/js'))
    cb()
})

npm install gulp-htmlmin -D

//gulp-htmlmin  压缩html
var htmlmin = require('gulp-htmlmin');
gulp.task('htmlmin', function() {
   gulp.src('src/**/*.html')
//    压缩html代码 去掉了 空格和换行
    .pipe(htmlmin({collapseWhitespace: true}))
    .pipe(gulp.dest('dist'));
})

npm install gulp-connect -D

var connect = require("gulp-connect");

// 刷新任务
gulp.task("reload", function () {
    gulp.src("./src/**/*.html").pipe(connect.reload());
});

gulp.task('w', function (cb) {
    // 启动一台http服务器
    connect.server({
        livereload: true,
    });

    // 监听路径下scss文件,一旦文件有变化,执行scss任务
    // 
    console.log('开始监听scss文件的变化');
    gulp.watch('./src/scss/**/*.scss', gulp.parallel(['scss']));
    gulp.watch('src/*.html', gulp.parallel(['minify']));
    gulp.watch('src/js/*.js', gulp.parallel(['js']));
    gulp.watch('src/js/login/*.js', gulp.parallel(['concat']));

    // 监听所有文件的变化
    gulp.watch('src/**/*.*', gulp.parallel(['reload']))
    cb()
})

npm i gulp-imagemin -D

npm i gulp-imagemin@7 -D

const imagemin = require('gulp-imagemin');
gulp.task('imagemin', function () {
    gulp.src('src/images/*')
        .pipe(imagemin())
        .pipe(gulp.dest('dist/images'))
})

打包任务

gulp.task('build', gulp.series(['js', 'sass', 'minify']), function () {

  console.log('项目的构件压缩完毕!');

})

网址:gulp.js - 基于流(stream)的自动化构建工具 | gulp.js中文网 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小镇庆山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值