gulp插件实现压缩一个文件夹下不同目录下的js文件(支持es6)
gulp-uglify:压缩js大小,只支持es5
安装:
cnpm: cnpm i gulp-uglify -D
yarn: yarn add gulp-uglify -D
使用:
代码实现1:压缩js文件夹下的index.js文件输出到dist文件夹下面(注意要压缩的js文件中此处只能使用es5)
var gulp = require('gulp');
var uglify = require('gulp-uglify');
gulp.task("uglify",function(){
gulp
.src('js/index.js') // 源文件
.pipe(uglify()) // 使用插件
.pipe(gulp.dest('dist')) // 设定输出目录
})
这只是一个简单的js文件压缩,如果我们需要输出到另一个文件夹中并重命名该怎么办?接下来我们的gulp-rename插件粉墨登场!!
gulp-rename:重命名插件
安装:
cnpm: cnpm i gulp-rename -D
yarn: yarn add gulp-rename -D
基本使用:
var gulp = require('gulp');
var rename = require('gulp-rename')
gulp.task('rename',function(){
console.log('开始重命名JS.....');
gulp
.src('js/index.js') // 源
// 1、字符串:适用于单文件重命名
.pipe(rename('index.min.js'))
// 2、函数:适用于需要进行判断的多文件重命名
.pipe(rename(function(path){ //(可以打印一下path看下里面的内容,方便理解)
path.dirname ='./js' // 输出目录的dist下目录名称
path.basename +='.min' // 文件名
path.extname='.min.js' // 后缀名(文件名和后缀名选择一个进行配置)
}))
// 3、对象:适用于多文件(推荐使用)
.pipe(rename({
dirname: "./js", // 输出目录的dist下目录名称
basename: "", // 文件名
prefix: "前缀-", // 文件名前缀
suffix: "-后缀", // 文件名后缀
extname: ".md" // 扩展名
}))
.pipe(gulp.dest('dist')) // 输出目录
})
代码实现2:压缩js文件夹下的index.js文件输出到dist文件夹下面,并重命名为index.min.js
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require("gulp-rename");
gulp.task("uglify",function(){
gulp
.src('js/index.js') // 源
.pipe(uglify()) // 使用压缩插件
.pipe(rename({
dirname: "./js", //输出到输出目录下的js目录下
suffix: ".min", // 给文件名加后缀
}))
.pipe(gulp.dest('dist')) // 设定输出目录
})
那么,现在又会出现一个问题,我如果想压缩不同目录下的js文件又该怎么办,或者说我想压缩的js文件中有es6,那又怎么办,别着急,我们先来解决压缩不同目录下的js文件,那么我们又将遇到一个老朋友‘*’,是不是很熟悉,通配符,css中是不是经常会使用到,这里我们也可以使用*和**来进行通配。
*匹配字符,**匹配字符包括“/”也就是目录,你是不是有想法了?
我们此处将在 gulp.src('js/index.js') 处做文章
gulp.src('js/*.js') //将会匹配js下所有的js文件
gulp.src('js/**/*.js') //将会匹配js下所有目录下的js文件 ,不管你的目录有多深,只有你在js文件夹下面,只有你里面包含js文件,使用这种办法都会被匹配到
代码实现3:压缩js文件夹下的所有的js文件输出到dist文件夹下面,并每个js文件名后都加上.min
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require("gulp-rename");
gulp.task("uglify",function(){
gulp
.src("js/**/*.js") //匹配js文件夹下的所有js文件
.pipe(uglify())//压缩文件
.pipe(rename({
suffix:".min" //给所有的文件名加上后缀.min
}))
.pipe(gulp.dest("dist")) //输出到dist文件夹下面
})
事情进行到这里,已经完成了很大一部分我们的需求了,那么接下来我们再来搞定可以支持压缩es6的问题,这里我们又使用到了一个插件gulp-babel插件
gulp-babel:可以将ES6代码转为ES5代码
安装:
cnpm: cnpm i gulp-babel -D
yarn: yarn add gulp-babel -D
代码实现4:压缩js文件夹下的所有的js文件输出到dist文件夹下面,并每个js文件名后都加上.min,并且支持es6压缩
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require("gulp-rename");
const babel = require('gulp-babel');
gulp.task("uglify",function(){
gulp
.src("js/**/*.js")
.pipe(babel({
presets: ['@babel/env']
}))//es6转es5
.pipe(uglify())
.pipe(rename({
suffix:".min"
}))
.pipe(gulp.dest("dist"))
})
好了,现在我们的目标已经实现了,你完全可以自己发挥自己的想象力去任意压缩js文件了!
gulp插件实现压缩一个文件夹下不同目录下的js文件(支持es6)的更多相关文章
- WPF 获取文件夹路径,目录路径,复制文件,选择下载文件夹/目录
private void Border_MouseLeftButtonUp_4(object sender, MouseButtonEventArgs e) { //获取项目中文件 , System. ...
- linux 下怎样查找一个文件夹在哪个目录下?
如果只显示所在目录的路径: find 目录 -type d -name "查询目录名" -printf "%h\n" 如果同时显示目录名称和所在目录的路径: f ...
- 怎样把.git版本控制文件夹放在项目目录下
在上传本地代码到本地git库时,.git的存放目录不能放到项目根目录下(报错). 可以先把.git仓库选择其他保存路径,然后再copy到项目根目录下.
- JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。
JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了.因为tomc ...
- 一个网站同一域名不同目录下的文件访问到的cookie值不同是什么原因?
一个网站(e:\test):里面包含多个目录如: html css js php img ..... 等等.然后,我在js目录里面的js文件中设置了cookie:同样也在php目录中的php文件中设置 ...
- <每日一题>题目11:以文件夹名称作为参数,返回该文件夹下所有文件的路径
''' 分析: 1.知道文件夹名称(假设是形如:E:\\software\\Notepad++),很显然可以通过OS模块去求 2.OS.listdir(sPath),列出文件夹内所有的文件和文件夹,以 ...
- Android加载SD卡目录,文件夹遍历,图片设置,设置文件对应打开方式等
此案例主要说的是Android使用GridView加载SD卡下所有目录,文件夹多层遍历,文件图标修改,设置文件对应打开方式等功能. 如图: 代码: public class GridViewFile ...
- selector是在文件夹drawable中进行定义的xml文件。
获取Drawable对象: Resources res = mContext.getResources(); Drawable myImage = res.getDrawable(R.drawable ...
- JavaSE 文件递归之删除&获取文件夹文件夹中全部的以.jpg的文件的绝对路径
1.递归删除文件 假设一个文件夹以下还有子文件夹,进行删除的话会 报错,这个时候要使用递归的方式来删除这个文件文件夹中的全部文件以及文件夹 package cn.itcast.digui; impor ...
随机推荐
- linux查看所有用户信息
所有的用户信息在根目录/etc/中passwd文件内,而passwd的所有权限是root用户及root组用户,所有想要查看所有用户,需要root用户登录系统. root用户登录后,可以直接用查看命令c ...
- CF451E Devu and Flowers 数论
正解:容斥+Lucas定理+组合数学 解题报告: 传送门! 先mk个我不会的母函数的做法,,, 首先这个题的母函数是不难想到的,,,就$\left ( 1+x_{1}^{1}+x_{1}^{2}+. ...
- uboot - the bootloader of linux
[转载]https://blog.csdn.net/kernel_yx/article/details/53045424 最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移 ...
- MQTT----物联网常用的消息队列协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建 ...
- Android 浏览器内 H5 电脑 Chrome 调试
Android 浏览器内 H5 调试 chrome://inspect 移动前端调试方案(Android + Chrome 实现远程调试) adb 相关资源 adb shell(ADB Kits)下载 ...
- (转)Jmeter基础之编写HTTP接口用例
使用Jmeter书写一个接口用例 第一:添加线程组 一.添加一个线程组,方法如下图所示: 二.配置线程组,如下图图所示: 需要填写名称,按需要修改线程数.等待时间和循环次数等: 第二:添加http请 ...
- Windows环境下安装Oracle数据库
Windows环境 1.解压文件 1)Oracle下载官网地址: http://www.oracle.com/technetwork/cn/database/enterprise-edition/do ...
- Podfile语法参考
中文翻译可以参考:Podfile语法参考(译) 英文官方文档:Podfile Syntax Reference
- idea (2018.09) 安装破解mybatis plugin
本来打算安装的是mybatis plugin最新版本(4.0.4) 但是安装下来发现lib目录中少mybatis_plugin.jar包 只有手动安装了这里安装的是2.9.2版本使用了一下不受影响 破 ...
- winrar目录穿越漏洞
地址: 参考: https://research.checkpoint.com/extracting-code-execution-from-winrar/ POC: https://github.c ...