gulpfile 编译运行_Gulp基本使用
>[ 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基本使用相关推荐
- TVM yolov3优化代码修改(编译运行OK)
TVM yolov3优化代码修改(编译运行OK) yolov3_quantize_sample.py 附https://github.com/makihiro/tvm_yolov3_sample代码: ...
- 命令行编译运行CSharp文件
命令行编译运行CSharp文件 找到csc.exe所在的路径.如我本机上为"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" 在环境变量 ...
- [笔记]用VS2010编译运行项目时报“LINK : fatal error LNK1104:...
为什么80%的码农都做不了架构师?>>> 参考:http://hi.baidu.com/%CE%C2%BF%AA%D4%B4/blog/item/e92c0e82c9ae4ec ...
- linux eclipse-JAVA_从 Linux 终端编译运行 Eclipse Java 项目
假如你在linux系统下使用Eclipse开发一个Java项目,你可能会有从其他地方远程连接这个项目的需求.或许 你可以使用teamviewer远程连接linux桌面,但那经常会非常龟速.你也可以从常 ...
- Linux环境中Visual Studio Code的配置使用----编译运行C/C++(良心教程)
之前的博文分享了下载安装[VS code]的详细教程, 有需要速戳–>Linux环境中Visual Studio Code 安装配置及其卸载(详细教程) 本篇博文分享本人初次使用[VS code ...
- VTK Example代码编译运行
在VTK源码包的Example中,每个模块的例子都有一个CMakeList文件,可之间编译运行. 但VTK版本更新快,模块经常小改,而对于VTK6.x的Example的CMakeLists却没有改动 ...
- Windows/Linux下引用jar包,并用javac/java编译运行
Windows/Linux下引用jar包,并用javac/java编译运行,有需要的朋友可以参考下. 1> Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, ja ...
- linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt
[2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...
- 使用sublime编译运行C程序
原 使用sublime编译运行C程序 2017年04月13日 17:09:16 DragonFreedom 阅读数 13177 1.打开sublime,找到顶部工具(Tool)菜单->编译系统( ...
- c 运行 java linux命令行参数,Linux下用命令行编译运行Java总结
最近使用腾讯云的Cloud Studio写Java,只能使用命令行进行编译运行,趁此机会,学习一下Linux的一些常用命令.平时windows下IDE用习惯了,现在用命令行进行编译运行,发现其实问题还 ...
最新文章
- 富士康裁员六万,试图用机器人扭转赤字?
- Linux内核的同步机制---自旋锁
- Java基础day23
- Android elevation的使用阴影
- python中sklearn库更新_python库之sklearn
- mac系统用什么linux远程工具,推荐几个Mac/Linux下比较好用的工具
- linux qt qpa linuxfb,Linux qt qt.qpa.plugin: Could not load the Qt platform plugin xcb error解决方...
- 数据结构 将两个有序的链表合并为一个新链表
- linux下1060显卡驱动安装,ubuntu16.04 联想拯救者y7000笔记本电脑安装1060显卡驱动,及ubuntu16.04更新内核...
- Esp8266学习搭建开发环境,开始一个“hellow world”串口打印。
- linux系统使用crontab定时删除日志文件
- 按键(独立按键、矩阵键盘)——附带程序
- 3.微信小程序-B站:wxml和wxss文件
- 电池的几何形状和标准尺寸
- iPhone X下界面满屏展示
- Spring如何解决单例循环依赖
- 软件工程导论张海蕃书籍pdf_《软件工程导论》张海蕃课后习题答案
- ImportError: libgflags.so.2: cannot open shared object file: No such file or directory
- SkeyeVSS综合安防监控视频云服务Windows、Linux跨平台安装部署说明文档
- linux网络-- 手动配置ip地址
热门文章
- Observium Feature分析
- 百度杀毒软件2013低调发布 仅面向泰国市场推出
- 荣耀路由2 虚拟服务器,荣耀路由器2恢复出厂设置的两种方法
- vb调用c语言程序,用VB编写程序,求S=A!+B!+C!,阶乘的计算分别用Sub过程和Function过程两种方法来实现...
- java生成pdf417条形码_python生成417条形码(PDF417)
- 小米笔记本 镜像_2020年小米笔记本Air 13.3原装WIN10出厂系统ISO镜像1607原版下载...
- 01将乌班图系统安装到U盘,实现即插即用
- 全面理解网络流中的最大流问题
- vim 操作命令大全
- 软件系统分析-分账系统