【gulp】gulp 的基本使用

embedded/2024/12/27 13:32:07/

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

创建项目

进入项目

    npm init -ynpm i gulp -g  (使用命令 gulp)npm i gulp -D   #     开发依赖(前端工具都是开发依赖  本地安装 代码加载模块)npm i axios   #npm i axios --save         项目依赖-线上项目依赖(线上的代码需要用到 比如 axios)#dev 开发环境   源代码 - 使用一个工具 gulp把代码进行压缩#test 测试环境#生产环境 线上   css,js,html 压缩   不需要使用gulp

gulpfilejs">项目根目录中创建 gulpfile.js

const gulp = require('gulp');
gulp.task('tname',function(cb){//任务代码cb()
})
在终端中:gulp tnamegulp.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-%E6%89%A7%E8%A1%8C%E4%BB%BB%E5%8A%A1">在终端中输入 gulp js 执行任务

编译js 高版本js转低版本

gulp-babel-babelcore-babelpreset-env">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-uglifyvar 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'))
})

gulp-concat--d">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()
})

gulp-htmlmin--d">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'));
})

gulp-connect--d">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()
})

gulp-imagemin--d">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.ppmy.cn/embedded/149185.html

相关文章

代码随想录day27 贪心1

题目:455.分发饼干 376.摆动序列 53.最大子序和 需要重做:全部 贪心算法其实就是没有什么规律可言,所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其规律, 没有思路就立刻看题解。 理论基础 贪心的…

「地平线」副总裁余轶南与「理想汽车」智驾产品总监赵哲伦联手创业,入局具身智能赛道!

小编早期文章:智驾领域从业者,疯狂涌入人形机器人赛道!就有提到智驾领域从业者入局人形机器人赛道是趋势并分析原因。 之前媒体报道的智驾芯片上市公司【地平线】创始成员、副总裁、前软件平台产品线总裁余轶南(博士)…

leetcode hot100 LRU缓存

146. LRU 缓存 已解答 中等 相关标签 相关企业 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&…

【Java 数据结构】面试题 02.02. 返回倒数第 k 个节点

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 题目 2. 解析 2.1 普通方法 2.1 快慢节点方法 3. 代码实现 3.1 普通方法 3.2 快慢节点方法 4. 小结 1. 题目 实现一种算法,找出单向链表…

生产管理系统PHP+Uniapp源码

生产管理系统,帮助企业数字化转型,打造智能工厂,专业为生产企业量身开发的一套完整的生产管理系统。主要包含以下模块:购货模块、生产模块、仓库模块、资料模块,可配合酷柚易汛进销存无缝衔接使用。提供全部无加密服务…

springai 简易聊天机器人设计

# 1. 引言 **Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。** ![image-202411122307163…

PDF书籍《手写调用链监控APM系统-Java版》第4章 SPI服务模块化系统

本人阅读了 Skywalking 的大部分核心代码,也了解了相关的文献,对此深有感悟,特此借助巨人的思想自己手动用JAVA语言实现了一个 “调用链监控APM” 系统。本书采用边讲解实现原理边编写代码的方式,看本书时一定要跟着敲代码。 作者…

D类音频应用EMI管理

1、前言 对于EMI,首先需要理解天线。频率和波长之间的关系,如下图所示。   作为有效天线所需的最短长度是λ/4。在空气中,介电常数是1,但是在FR4或玻璃环氧PCB的情况下,介电常数大约4.8。这种效应会导致信号在FR4材…