gulp学习笔记

本文介绍如何使用Gulp构建自动化工作流程,包括项目初始化、目录结构设置、配置文件编写及常见任务定义等内容。

1.安装什么的就不介绍了,会安装webpack就会安装gulp

2.进入到项目目录,使用如下命令初始化项目

npm init

当然,也可以直接创建一个package.json文件,内容如下:
{
“name”: “Gulp-Workflow”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit 1”,
“start”: “gulp dev”,
“dev”: “gulp dev”,
“clean”: “rimraf dist”,
“build”: “rimraf dist && gulp build”
},
“author”: “”,
“license”: “ISC”,
“devDependencies”: {
“browser-sync”: “^2.18.6”,
“gulp”: “^3.9.1”,
“gulp-autoprefixer”: “^3.1.1”,
“gulp-concat”: “^2.6.1”,
“gulp-cssnano”: “^2.1.2”,
“gulp-imagemin”: “^3.1.1”,
“gulp-jshint”: “^2.0.4”,
“gulp-rename”: “^1.2.2”,
“gulp-sass”: “^3.0.0”,
“gulp-uglify”: “^2.0.0”,
“jshint”: “^2.9.4”
}
}

3.创建目录结构
  我们在项目中创建一个src目录,作为项目的源。而创建dist目录作为源文件打包后存放的位置,创建build目录放置gulp的另外一些配置文件。如下:

- project
  |- build
  |- dist // 打包文件夹
  |- src  // 源文件夹
  | |- assets // 放置一些第三方文件,如bootstrap
  | |- css
  | | `- index.css
  | |- images
  | |- js
  | | `- index.js
  | |- sass
  | | `- index.scss
  |- gulpfile.js
  `- package.json

4.编写Gulp配置
创建gulp的config文件
  我们在build文件夹中可以创建一个 gulpfile.config.js 文件,主要用途为保存项目的目录配置,如源文件存放的路径,打包后文件存放的路径等,可以进行灵活配置。同时将Config对应暴露出来供其他文件引用。
gulpfile.config.js 写打包进程,并且监听css,js,img的变化。

var SRC_DIR = "./src/";   //源代码路径
var DIST_DIR = "./dist/";  //编译好的代码路径
var paths = {};
//需要打包的文件夹
var plugins = ["alert","box","hphm","public","select","validate"];
/*
 * 需要用到的插件安装
 * npm install --save-dev gulp gulp-minify-css gulp-uglify gulp-rename gulp-concat gulp-imagemin del gulp-zip  gulp-if gulp-rev gulp-rev-collector gulp-sequence 
 */
var gulp = require('gulp'); //基础库
var minifycss = require('gulp-minify-css'); //css压缩
var uglify = require('gulp-uglify'); //js压缩
var rename = require('gulp-rename'); //重命名
var concat = require('gulp-concat'); //合并文件
var imagemin = require('gulp-imagemin'); //图片压缩
var del = require('del'); //清空文件
var zip = require('gulp-zip'); //生成zip包
var less = require('gulp-less'); //预编译css
var inject = require('gulp-inject-string');//插入字符
//var rev = require('gulp-rev');                                  //- 对文件名加MD5后缀
//var revCollector = require('gulp-rev-collector'); 
//var gulpSequence = require('gulp-sequence');  //顺序执行 ,但对zip还是不起作用
//var gulpif = require('gulp-if');
//var sprity = require('sprity');



 //需要压缩,打包的css,js,image文件
function createPath(plugins){
    var jsPath = [],imagePath = [],cssPath = [];
    for(var i=0,l=plugins.length;i<l;i++){
        jsPath.push(SRC_DIR+plugins[i]+'/*.js');
        imagePath.push(SRC_DIR+plugins[i]+'/css/images/*');
        cssPath.push(SRC_DIR+plugins[i]+'/css/*.css');
    }
    return {"css":cssPath,"js":jsPath,"img":imagePath};
}


/**压缩CSS
 * 传入路径,名称,压缩后的路径
 * @param {Object} src
 * @param {Object} name
 * @param {Object} dist
 */
function buildCss(src,name,dist){
    return gulp.src(src)
        .pipe(concat(name+'.css')) //合并文件
        .pipe(gulp.dest(dist)) //将合并好的文件写入打包后的目录
        .pipe(rename({suffix: '.all'})) //重命名
        .pipe(minifycss())              //压缩
        .pipe(gulp.dest(dist))
        .pipe(rename({suffix: '.min'}))
}

/**压缩JS
 * 传入路径,名称,压缩后的路径
 * @param {Object} src
 * @param {Object} name
 * @param {Object} dist
 */
function buildJs(src,name,dist){
    return gulp.src(src)
        .pipe(concat(name+'.js')) //合并文件
        .pipe(gulp.dest(dist)) //将合并好的文件写入打包后的目录
        .pipe(rename({suffix: '.min'})) //重命名
        .pipe(uglify())              //压缩
        .pipe(gulp.dest(dist))     //继续输出
}

/**
 * 压缩图片
 * @param {Object} src
 * @param {Object} dist
 */
function buildIMG(src,dist){
   return  gulp.src(src)
              // .pipe(imagemin()) //图片压缩
               .pipe(gulp.dest(dist));
}

function copyRes(src,dist){
    return  gulp.src(src)
                .pipe(gulp.dest(dist))


}
//清空图片、样式、js
gulp.task('clean',function(){
    return del(DIST_DIR);
});


 paths = createPath(plugins);


 //压缩任务,表示先执行clean任务之后再执行压缩任务
 gulp.task('server',['clean'],function(){
    buildIMG(paths.img,DIST_DIR+'/css/images');
    buildCss(paths.css,"traffic_ui",DIST_DIR+'css');
    buildJs(paths.js,"traffic_ui",DIST_DIR+'js');
    copyRes([SRC_DIR+'select/py.dic',SRC_DIR+'select/polyphone.json'],DIST_DIR);
 });
// 监听任务 运行语句 gulp watch,主要是监听各个文件的变化
gulp.task('watch',function(){
    // 监听css
    gulp.watch(paths.css, function(){
        gulp.start('css');
    });
    // 监听js
    gulp.watch(paths.js, function(){
        gulp.start('js');
    });
    // 监听images
    gulp.watch(paths.img, function(){
        gulp.start('cleanimg','img');
    });
});

这个是最基本的打包,就是把多个css,js文件合并为1个,并且放入指定的目录中。

内容概要:本文详细阐述了车载以太网通信栈中两个核心模块——以太网接口(EthIf)与以太网驱动(Eth)的功能需求与技术规范。重点介绍了EthIf在上下层协议间的数据转发、硬件抽象、VLAN支持、PDU配置、队列调度、睡眠管理及性能计数器等方面的设计要求;同时深入描述了Eth模块在硬件初始化、工作模式切换、时间戳支持、DMA传输、流量整形与调度、帧抢占等底层驱动功能的技术实现要点。整体围绕车载高可靠性、低延迟、可配置性强的通信需求展开,体现了现代汽车电子架构对高性能网络通信的支持能力。; 适合人群:从事汽车电子、车载网络通信、ECU开发的工程师,尤其是熟悉AUTOSAR架构并希望深入了解以太网协议栈底层机制的研发人员;具备一定嵌入式系统和网络通信基础的技术人员。; 使用场景及目标:①用于设计和实现符合车规级要求的以太网通信栈;②理解EthIf与Eth在车载网络中的角色分工与协作机制;③掌握中断/轮询模式、VLAN处理、时间同步、流量调度、帧抢占等关键技术在实际系统中的应用;④支持高实时性应用场景如自动驾驶、多传感器融合等的网络架构设计。; 阅读建议:建议结合AUTOSAR标准文档及相关硬件手册进行对照学习,重点关注模块接口定义与状态机行为,结合实际项目需求进行配置与验证,并注意软硬件协同设计中的时序与资源管理问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值