gulp

gulp

gulp的配置过程
1_建立一个项目文件夹

需要建立一个项目文件夹,作为项目目录,所有的文件都要定义在这个文件夹中

2_项目规范

在这个项目文件夹中,按照项目规范,来设定文件夹目录结构

一般项目 源文件 都存储在一个指定的文件夹中 一般叫 src

压缩文件 都存储在龙一个指定文件夹中 一般叫 dist

src中 按照文件类型 存储在不同的文件夹中

pages 存储HTML文件

css 存储css文件

js 存储js文件

images 存储图片

​ …

最终的目的是,将src文件夹中的源文件,打包压缩,存储在 dist 文件夹中

3_要执行的基本的准备工作

3-1,准备好文件夹

​ 配置gulp选项时,文件夹路径是一项关键的配置

​ 最开始,必须要设定好相关的文件夹

3-2,先执行 npm init -y 自动配置初始化文件

​ 在当前项目文件夹中,会自动生成一个配置文件 package.json

3-3,手动创建一个js文件,名称必须定义为 gulpfile.js

​ 文件位置必须是 项目文件夹中,不要定义在 src 等文件夹中

3-4,每一种格式文件,要打包压缩,都要执行不同的规范

​ 就要给每一种需要打包的文件,设定打包规范

​ 每个不同项目,打包规范,也会有明确的规范,实际项目中,按照项目手册执行就可以

​ 我们目前先按照一般打包规范来设定

需要设定规范的文件格式

这里的压缩规范,都是通过第三方依赖包来执行的,必须要下载相应的依赖包

CSS

gulp-cssmin css压缩规范

gulp-autoprefixer css自动添加兼容前缀

注意

在执行 gulp-autoprefixer 时, 必须要在 package.js 文件中设定配置

"browserslist": [
    "last 2 versions",
    "IOS > 7",
    "FireFox > 20"
  ]
HTML

gulp-htmlmin HTML压缩规范

JS

gulp-uglify js的压缩规范,只能压缩ES5语法规范的内容

gulp-babel 将其他ES语法规范,转化为ES5语法

服务器

gulp-webserver 服务器压缩规范

独立的删除规范

del 多次压缩,要先删除之前压缩的文件内容

音频,视频,图片等,一般是不压缩的,直接移动到 dist 文件夹中

实际项目中,按照项目手册执行

添加其他插件依赖包

常用的gulp方法

导入gulp第三方依赖包

生成的gulp对象中,有 gulp 的打包压缩方法,我们只要使用就可以了

1_gulp.src()

指定要执行gulp打包压缩文件路径的方式

2_gulp.pipe()

执行第三方依赖包定义的打包压缩规范,以及相应的程序内容

gulp的语法规范规定,必须要使用gulp.pipe()来执行相应的程序内容

3_gulp.dest()

将压缩打包好的程序,移动至指定的文件夹位置中

4_gulp.watch()

指定监听路径中的文件,如果文件内容保存,会自动执行程序

5_gulp.series()

用来执行多个任务

逐个执行()中添加的程序内容,添加的必须是函数的名称,不能是 函数的执行,不能有()

6_gulp.parallel

同时执行()中添加的程序内容,添加的必须是函数的名称,不能是 函数的执行,不能有()

gulpfile.js
//1 导入gulp
const gulp = require('gulp');
//2 导入del
const del = require('del'); 
//3 导入gulp-autoprefixer
const autoprefixer = require('gulp-autoprefixer')
//4 导入gulp-cssmin
const cssmin = require('gulp-cssmin')
//5 导入gulp-htmlmin
const htmlmin = require('gulp-htmlmin')
//6 导入gulp-babel
const babel = require('gulp-babel')
//7 导入gulp-uglify
const uglify = require('gulp-uglify')
//8 导入gulp-webserver
const webserver = require('gulp-webserver')

//书写关于css压缩的规则
const cssHandler = ()=>{
    return gulp.src('./src/css/*.css')
    .pipe(autoprefixer())
    .pipe(cssmin())
    .pipe(gulp.dest('./dist/css'))
}

//书写关于html压缩的规则
const htmlHandler = ()=>{
    return gulp.src('./src/pages/*.html')
    .pipe(htmlmin({
        removeAttributeQuotes:true,//移除属性上的双引号
        removeComments:true,//移除注释
        collapseWhitespace:true,//移除所有空格,会变成一行代码
        minifyCSS:true,//把页面里面style标签里面的css样式也去空格
        minifyJS:true,//把页面里面script标签里面的js代码也去空格
        collapseBooleanAttributes:true//把值为布尔值的属性简写
    }))
    .pipe(gulp.dest('./dist/pages'))
}

//书写关于js压缩的规则
const jsHandler = ()=>{
    return gulp.src('./src/js/*.js')
    .pipe(babel({
        presets: ['@babel/env']
    }))
    .pipe(uglify())  //uglify不认识es6,一定要先转语法,再压缩
    .pipe(gulp.dest('./dist/js'))
}
//书写关于lib的移动的规则
const libHandler = ()=>{
    //我打算把src处理完成以后,都放到dist文件夹下
    return gulp.src('./src/lib/*.js')
    .pipe(gulp.dest('./dist/lib'))
}
//书写关于images的移动的规则
const imagesHandler = ()=>{
    return gulp.src('./src/images/**') //"**"表示images下面的所有文件
    .pipe(gulp.dest('./dist/images'))  
}
//书写关于删除的规则
const delHandler = ()=>{
    return del(['./dist'])
}

//书写webserver的规则
const webserverHandler = ()=>{
    return gulp.src('./dist')   //找到要作为服务器根目录的文件夹
    .pipe(webserver({
        port:8090,//端口号,0-6635之间,尽量不要用0-1023
        open:'./pages/index.html',//你默认打开的首页,路径从dist开始书写
        livereload:true,//热更新,就是当dist里面代码有变化的时候自动刷新浏览器
        proxies:[ //这个第三方模块还可以帮助我们配置代理
            //直接在使用webserver的时候添加一个配置项:   proxies:[]
            {
                source: '/abc', //表示请求的地址
                target: 'http://127.0.0.1/json.php'//你要代理的地址
            },
            {
                source: '/eee', //表示请求的地址
                target: 'http://127.0.0.1/json.php'//你要代理的地址
            }
        ]
    }))
}

//书写自动监控任务
const watchHandler = ()=>{
    /*
        当我在src里面书写代码的时候,只要我修改我的代码,就会被gulp监听到,
        一旦监听到,就重新帮我删除以前的和压缩现在的,一旦压缩,dist文件夹里面内容就变化了
        变化了以后服务器就会热更新
    */
    gulp.watch('./src/css/*.css',cssHandler);
    gulp.watch('./src/js/*.js',jsHandler);
    gulp.watch('./src/pages/*.html',htmlHandler);
    gulp.watch('./src/images/**',imagesHandler);
    gulp.watch('./src/lib/**',libHandler)
}
// 任务导出
module.exports.default = gulp.series(
    delHandler,
    gulp.parallel(libHandler,imagesHandler,cssHandler,htmlHandler,jsHandler),
    webserverHandler,
    watchHandler
)
package.json
{
  "name": "zhangsanshop",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {
    "@babel/core": "^7.10.4",
    "@babel/preset-env": "^7.10.4",
    "del": "^5.1.0",
    "gulp": "^4.0.2",
    "gulp-autoprefixer": "^7.0.1",
    "gulp-babel": "^8.0.0",
    "gulp-cssmin": "^0.2.0",
    "gulp-htmlmin": "^5.0.1",
    "gulp-uglify": "^3.0.2",
    "gulp-webserver": "^0.9.1"
  },
  // 在执行 gulp-autoprefixer 时, 设定配置添加兼容前缀
  "browserslist": [
    "last 2 versions",
    "iOS > 7",
    "FireFox < 20",
    "last 2 Explorer versions"
  ]
}
数据集介绍:多品类农业目标检测数据集 数据集名称:多品类农业目标检测数据集 图片数量: - 训练集:11,911张图片 - 验证集:422张图片 - 测试集:124张图片 - 总计:12,457张高质量图片 分类类别: 涵盖51个农业相关类别,包括水果(苹果、香蕉、芒果、葡萄)、蔬菜(卷心菜、黄瓜、茄子、菠菜)、坚果(杏仁、腰果、榛子、核桃)、调味作物(辣椒、生姜、大蒜)及肉类(牛肉、鸡肉、猪肉)等,完整覆盖农业生产链关键品类。 标注格式: YOLO格式,包含标准化边界框坐标及类别标签,可直接用于目标检测模型训练。 1. 农业自动化分拣系统 支持开发AI驱动的分拣机器人,精准识别水果成熟度、坚果品类及蔬菜质量,提升加工效率。 1. 智能农场监测 用于无人机或摄像头系统,实时检测作物生长状态、病虫害区域及成熟作物分布。 1. 食品加工质量控制 集成至生产线视觉系统,自动检测原料种类(如肉类分类、坚果筛选),确保加工合规性。 1. 农业科研与教育 为农业院校提供多品类检测基准数据,支持算法研究及教学案例开发。 全链路覆盖 从田间作物(甜玉米、土豆)到加工原料(肉类、坚果),覆盖农业生产-加工全流程检测需求。 标注专业性 YOLO标注经多轮校验,边界框紧密贴合目标,支持复杂场景下的密集目标检测(如混合坚果分拣)。 场景多样性 包含自然光照、阴影遮挡、多角度拍摄等真实农业环境数据,强化模型鲁棒性。 高扩展性 兼容YOLOv5/v7/v8等主流框架,支持快速迁移至分类、计数等衍生任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值