当前位置: 首页 > article >正文

【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中文网 


http://www.kler.cn/a/453443.html

相关文章:

  • 【流量、洪水数据下载】网站介绍和下载经验....不断更新!
  • Spring基础分析14-用户认证与授权
  • mac_录屏
  • 【ES6复习笔记】Symbol 类型及其应用(9)
  • Kafka可视化工具 Offset Explorer (以前叫Kafka Tool)
  • TLDR:终端命令的简洁百科全书
  • 从数据仓库到数据中台再到数据飞轮:电信行业的数据技术进化史
  • 质数生成函数、质数判断备份
  • <论文>语言模型可以进行无监督的多任务学习?
  • 从源码到应用:在线问诊系统与医疗陪诊APP的开发全过程详解
  • 12.26 学习卷积神经网路(CNN)
  • npm淘宝镜像
  • Dilateformer实战:使用Dilateformer实现图像分类任务(二)
  • BLE core 内容整理解释
  • FFMPEG结构体分析
  • Linux高并发服务器开发 第六天(rwx 对于目录和文件的区别 gcc编译器 动态库静态库)
  • yolov4算法及其改进
  • C#异步1
  • 蚂蚁集团 CTO 线大规模调整、多个 AI 业务部门被合并
  • 工业大数据分析算法实战-day16
  • 天池工业蒸汽量预测教程
  • FTT变换Matlab代码解释及应用场景
  • go window安装protoc protoc生成protobuf文件
  • vue关闭eslint校验及开启debugger
  • 【jenkins插件】
  • Java 集合使用注意事项总结