>[ Gulp.js](https://www.gulpjs.com.cn/) 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。

1.基本使用

```

npm i gulp-cli -g

npm i gulp -D

cnpm i gulp gulp-uglify gulp-concat

```

2.创建文件gulpfile.js键入如下

```

const gulp = require('gulp');

const uglify = require('gulp-uglify');

const concat = require('gulp-concat');

function build(done) {

gulp.src(['src/test/**/*.js'])

//src/js目录下所有js文件

.pipe(concat('bundle.min.js'))//压缩成一个文件,不指定则分别压缩

.pipe(uglify())

.pipe(gulp.dest('./build/js'))

done();

}

function hello(done){

console.log('hello');

done();

}

exports.default = gulp.series(build,hello)

```

上述代码会将src/test里面的所有js文件合并,压缩成一个文件并保存到`./bunld/js/bundle.min.js`

运行命令

```

gulp

```

返回如下

```

$ gulp

[08:51:09] Using gulpfile ~\Desktop\nodejs\gulp\gulpfile.js

[08:51:09] Starting 'default'...

[08:51:09] Finished 'build' after 17 ms

[08:51:09] Starting 'hello'...

hello

[08:51:09] Finished 'hello' after 1.65 ms

[08:51:09] Finished 'default' after 21 ms

```

**编译es6**

```

cnpm i gulp-babel @babel/core @babel/preset-env -D

```

```

const gulp = require('gulp');

const uglify = require('gulp-uglify');

const concat = require('gulp-concat');

const babel = require('gulp-babel');//引入babel

function build(done) {

gulp.src(['src/test/**/*.js'])

//src/js目录下所有js文件

.pipe(babel({

presets:['@babel/env']

}))

.pipe(concat('bundle.min.js'))//压缩成一个文件,不指定则分别压缩

.pipe(uglify())

.pipe(gulp.dest('./build/1js'))

done();

}

```

**sourcemap**

当我们执行编译时,如果代码有错会非常不利于调试,因为代码都变成一行了

解决办法是通过sourcemap。

sourcemap保留了之前编译的代码使代码容易调试,当出错时浏览器会通过sorcemap恢复源代码并定位错误

```

cnpm i gulp-sourcemaps -D

```

```

const gulp = require('gulp');

const uglify = require('gulp-uglify');

const concat = require('gulp-concat');

const babel = require('gulp-babel');

const sourcemaps = require('gulp-sourcemaps');

function build(done) {

gulp.src(['src/1.js'])

//src/js目录下所有js文件

.pipe(sourcemaps.init())//sorcemap初始化

.pipe(babel({

presets:['@babel/env']

}))

.pipe(concat('bundle.min.js'))//压缩成一个文件,不指定则分别压缩

.pipe(uglify())

.pipe(sourcemaps.write('../maps'))//sourcemap数据写入

.pipe(gulp.dest('./build/js'))

done();

}

function hello(done){

console.log('hello');

done();

}

exports.default = gulp.series(build,hello)

```

某js文件

```

alert("0134256u6i")

Datw.style.backgroundColor='red'

```

我们的代码并没有Text元素,但打包时不会报错

当html引入打包后的js文件时

![](http://)

![](http://www.zihanzy.com/uploads/images/article_con/202007/25/article_con_1595640928_e676IM95Vp.png)

![](http://)![](http://www.zihanzy.com/uploads/images/article_con/202007/25/article_con_1595640940_ypcVPM3fuJ.png)

直接定位了错误信息,方便调试

不过使用这个功能必须打开谷歌浏览器的Enable Javascript source maps

![](http://)![](http://www.zihanzy.com/uploads/images/article_con/202007/25/article_con_1595640995_7mHBcOUAi3.jpg)

**css**

```

cnpm i gulp-cssmin -D

```

```

const gulp = require('gulp');

const concat = require('gulp-concat');

const cssmin = require('gulp-cssmin');

const sourcemaps = require('gulp-sourcemaps');

function build(done) {

gulp.src(['src/*.css'])

//src/js目录下所有js文件

.pipe(sourcemaps.init())//sorcemap初始化

.pipe(concat('test.min.css'))//压缩成一个文件,不指定则分别压缩

.pipe(cssmin())

.pipe(sourcemaps.write('../maps'))//sourcemap数据写入

.pipe(gulp.dest('./build/css'))

done();

}

exports.default = build;

```

**自动监听**

```

const gulp = require('gulp');

const uglify = require('gulp-uglify');

const concat = require('gulp-concat');

const babel = require('gulp-babel');

const sourcemaps = require('gulp-sourcemaps');

const watcher = gulp.watch(['./src/*.js']);

const livereload = require('gulp-livereload');

//打包函数

let js = function js(done){

gulp.src(['src/*.js'])

//src/js目录下所有js文件

.pipe(sourcemaps.init())//sorcemap初始化

.pipe(babel({

presets:['@babel/env']

}))

.pipe(concat('bundle.min.js'))//压缩成一个文件,不指定则分别压缩

.pipe(uglify())

.pipe(sourcemaps.write('../maps'))//sourcemap数据写入

.pipe(gulp.dest('./build/js'))

.pipe(livereload());

console.log(`File was changed`);

done()

}

//监听文件

function watch(){

livereload.listen();

gulp.watch('./src/*.js', js)

//重新加载对应文件

gulp.watch(['./src/*.js','./index.html']).on('change',function(path){

livereload.changed(path)

})

}

exports.default = watch;

/**

* 1.指定路径

* 2.打包指定输出的文件

* 3.压缩

* 4.输出目录

* cnpm i gulp gulp-uglify gulp-concat gulp-rename

* sourcemap 保留了之前编译的代码使代码容易调试

* 出错,浏览器通过sorcemap恢复源代码

* cnpm i gulp-sourcemaps -D\

* gulp-watch

* livereload

* cnpm i -g http-server

* cnpm i gulp-livereload -D

* 安装插件

*/

```

gulpfile 编译运行_Gulp基本使用相关推荐

  1. TVM yolov3优化代码修改(编译运行OK)

    TVM yolov3优化代码修改(编译运行OK) yolov3_quantize_sample.py 附https://github.com/makihiro/tvm_yolov3_sample代码: ...

  2. 命令行编译运行CSharp文件

    命令行编译运行CSharp文件 找到csc.exe所在的路径.如我本机上为"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" 在环境变量 ...

  3. [笔记]用VS2010编译运行项目时报“LINK : fatal error LNK1104:...

    为什么80%的码农都做不了架构师?>>>    参考:http://hi.baidu.com/%CE%C2%BF%AA%D4%B4/blog/item/e92c0e82c9ae4ec ...

  4. linux eclipse-JAVA_从 Linux 终端编译运行 Eclipse Java 项目

    假如你在linux系统下使用Eclipse开发一个Java项目,你可能会有从其他地方远程连接这个项目的需求.或许 你可以使用teamviewer远程连接linux桌面,但那经常会非常龟速.你也可以从常 ...

  5. Linux环境中Visual Studio Code的配置使用----编译运行C/C++(良心教程)

    之前的博文分享了下载安装[VS code]的详细教程, 有需要速戳–>Linux环境中Visual Studio Code 安装配置及其卸载(详细教程) 本篇博文分享本人初次使用[VS code ...

  6. VTK Example代码编译运行

    在VTK源码包的Example中,每个模块的例子都有一个CMakeList文件,可之间编译运行.  但VTK版本更新快,模块经常小改,而对于VTK6.x的Example的CMakeLists却没有改动 ...

  7. Windows/Linux下引用jar包,并用javac/java编译运行

    Windows/Linux下引用jar包,并用javac/java编译运行,有需要的朋友可以参考下. 1> Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, ja ...

  8. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  9. 使用sublime编译运行C程序

    原 使用sublime编译运行C程序 2017年04月13日 17:09:16 DragonFreedom 阅读数 13177 1.打开sublime,找到顶部工具(Tool)菜单->编译系统( ...

  10. c 运行 java linux命令行参数,Linux下用命令行编译运行Java总结

    最近使用腾讯云的Cloud Studio写Java,只能使用命令行进行编译运行,趁此机会,学习一下Linux的一些常用命令.平时windows下IDE用习惯了,现在用命令行进行编译运行,发现其实问题还 ...

最新文章

  1. 富士康裁员六万,试图用机器人扭转赤字?
  2. Linux内核的同步机制---自旋锁
  3. Java基础day23
  4. Android elevation的使用阴影
  5. python中sklearn库更新_python库之sklearn
  6. mac系统用什么linux远程工具,推荐几个Mac/Linux下比较好用的工具
  7. linux qt qpa linuxfb,Linux qt qt.qpa.plugin: Could not load the Qt platform plugin xcb error解决方...
  8. 数据结构 将两个有序的链表合并为一个新链表
  9. linux下1060显卡驱动安装,ubuntu16.04 联想拯救者y7000笔记本电脑安装1060显卡驱动,及ubuntu16.04更新内核...
  10. Esp8266学习搭建开发环境,开始一个“hellow world”串口打印。
  11. linux系统使用crontab定时删除日志文件
  12. 按键(独立按键、矩阵键盘)——附带程序
  13. 3.微信小程序-B站:wxml和wxss文件
  14. 电池的几何形状和标准尺寸
  15. iPhone X下界面满屏展示
  16. Spring如何解决单例循环依赖
  17. 软件工程导论张海蕃书籍pdf_《软件工程导论》张海蕃课后习题答案
  18. ImportError: libgflags.so.2: cannot open shared object file: No such file or directory
  19. SkeyeVSS综合安防监控视频云服务Windows、Linux跨平台安装部署说明文档
  20. linux网络-- 手动配置ip地址

热门文章

  1. Observium Feature分析
  2. 百度杀毒软件2013低调发布 仅面向泰国市场推出
  3. 荣耀路由2 虚拟服务器,荣耀路由器2恢复出厂设置的两种方法
  4. vb调用c语言程序,用VB编写程序,求S=A!+B!+C!,阶乘的计算分别用Sub过程和Function过程两种方法来实现...
  5. java生成pdf417条形码_python生成417条形码(PDF417)
  6. 小米笔记本 镜像_2020年小米笔记本Air 13.3原装WIN10出厂系统ISO镜像1607原版下载...
  7. 01将乌班图系统安装到U盘,实现即插即用
  8. 全面理解网络流中的最大流问题
  9. vim 操作命令大全
  10. 软件系统分析-分账系统