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)

1 var gulp = require(‘gulp‘);
2 var uglify = require(‘gulp-uglify‘);
3
4 gulp.task("uglify",function(){
5     gulp
6         .src(‘js/index.js‘)       // 源文件
7         .pipe(uglify())           // 使用插件
8         .pipe(gulp.dest(‘dist‘)) // 设定输出目录
9 })

这只是一个简单的js文件压缩,如果我们需要输出到另一个文件夹中并重命名该怎么办?接下来我们的gulp-rename插件粉墨登场!!

gulp-rename:重命名插件

安装:

  cnpm: cnpm i gulp-rename -D

  yarn: yarn add gulp-rename -D

基本使用:

 1 var gulp = require(‘gulp‘);
 2 var rename = require(‘gulp-rename‘)
 3
 4 gulp.task(‘rename‘,function(){
 5   console.log(‘开始重命名JS.....‘);
 6   gulp
 7     .src(‘js/index.js‘)  // 源
 8     // 1、字符串:适用于单文件重命名
 9      .pipe(rename(‘index.min.js‘))
10     // 2、函数:适用于需要进行判断的多文件重命名
11      .pipe(rename(function(path){ //(可以打印一下path看下里面的内容,方便理解)
12          path.dirname =‘./js‘    // 输出目录的dist下目录名称
13          path.basename  +=‘.min‘  // 文件名
14          path.extname=‘.min.js‘     // 后缀名(文件名和后缀名选择一个进行配置)
15
16      }))
17
18     // 3、对象:适用于多文件(推荐使用)
19    .pipe(rename({
20         dirname: "./js",  // 输出目录的dist下目录名称
21         basename: "",          // 文件名
22         prefix: "前缀-",         // 文件名前缀
23         suffix: "-后缀",            // 文件名后缀
24         extname: ".md"              // 扩展名
25     }))
26     .pipe(gulp.dest(‘dist‘)) // 输出目录
27 })

代码实现2:压缩js文件夹下的index.js文件输出到dist文件夹下面,并重命名为index.min.js

 1 var gulp = require(‘gulp‘);
 2 var uglify = require(‘gulp-uglify‘);
 3 var rename = require("gulp-rename");
 4
 5
 6 gulp.task("uglify",function(){
 7     gulp
 8         .src(‘js/index.js‘)       // 源
 9         .pipe(uglify())           // 使用压缩插件
10         .pipe(rename({
11             dirname: "./js",       //输出到输出目录下的js目录下
12             suffix: ".min",            // 给文件名加后缀
13         }))
14         .pipe(gulp.dest(‘dist‘)) // 设定输出目录
15 })

  那么,现在又会出现一个问题,我如果想压缩不同目录下的js文件又该怎么办,或者说我想压缩的js文件中有es6,那又怎么办,别着急,我们先来解决压缩不同目录下的js文件,那么我们又将遇到一个老朋友‘*’,是不是很熟悉,通配符,css中是不是经常会使用到,这里我们也可以使用*和**来进行通配。

  *匹配字符,**匹配字符包括“/”也就是目录,你是不是有想法了?

我们此处将在 gulp.src(‘js/index.js‘) 处做文章

1  gulp.src(‘js/*.js‘)  //将会匹配js下所有的js文件
2
3  gulp.src(‘js/**/*.js‘)  //将会匹配js下所有目录下的js文件 ,不管你的目录有多深,只有你在js文件夹下面,只有你里面包含js文件,使用这种办法都会被匹配到 

代码实现3:压缩js文件夹下的所有的js文件输出到dist文件夹下面,并每个js文件名后都加上.min

 1 var gulp = require(‘gulp‘);
 2 var uglify = require(‘gulp-uglify‘);
 3 var rename = require("gulp-rename");
 4
 5 gulp.task("uglify",function(){
 6     gulp
 7         .src("js/**/*.js")  //匹配js文件夹下的所有js文件
 8         .pipe(uglify())//压缩文件
 9         .pipe(rename({
10             suffix:".min"   //给所有的文件名加上后缀.min
11         }))
12         .pipe(gulp.dest("dist"))   //输出到dist文件夹下面
13 })

事情进行到这里,已经完成了很大一部分我们的需求了,那么接下来我们再来搞定可以支持压缩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压缩

 1 var gulp = require(‘gulp‘);
 2 var uglify = require(‘gulp-uglify‘);
 3 var rename = require("gulp-rename");
 4 const babel = require(‘gulp-babel‘);
 5
 6
 7 gulp.task("uglify",function(){
 8     gulp
 9         .src("js/**/*.js")
10         .pipe(babel({
11             presets: [‘@babel/env‘]
12         }))//es6转es5
13         .pipe(uglify())
14         .pipe(rename({
15             suffix:".min"
16         }))
17         .pipe(gulp.dest("dist"))
18 })

好了,现在我们的目标已经实现了,你完全可以自己发挥自己的想象力去任意压缩js文件了,下一节我们将来看看怎么压缩less和css

原文地址:https://www.cnblogs.com/nanxiaoge/p/10765859.html

时间: 2024-10-27 09:37:22

gulp插件实现压缩一个文件夹下不同目录下的js文件(支持es6)的相关文章

WPF 获取文件夹路径,目录路径,复制文件,选择下载文件夹/目录

private void Border_MouseLeftButtonUp_4(object sender, MouseButtonEventArgs e) { //获取项目中文件 string WantedPath = System.Windows.Forms.Application.StartupPath.Substring(0, System.Windows.Forms.Application.StartupPath.LastIndexOf(@"\")); string path

android sutio新建的文件夹但是工程目录下无法显示【解决方案】

这个问题因为studio可以选择展示内容,我们需要点击studio左上角的有个显示选项,如图所示:

一个网站同一域名不同目录下的文件访问到的cookie值不同是什么原因?

一个网站(e:\test):里面包含多个目录如: html css js php img ..... 等等.然后,我在js目录里面的js文件中设置了cookie:同样也在php目录中的php文件中设置了cookie.然后分别打开js目录下的js文件读取cookie和php目录中的php文件(用js脚本)读取cookie.都不能够完整的读取到这个网站的cookie!而只能够读取到同目录下js或php文件设置的cookie. 只有在网站根目录下才能够读取到完整的cookie值,这是为什么?有没有办法

JavaSE 文件递归之删除&获取文件夹文件夹中全部的以.jpg的文件的绝对路径

1.递归删除文件 假设一个文件夹以下还有子文件夹,进行删除的话会 报错,这个时候要使用递归的方式来删除这个文件文件夹中的全部文件以及文件夹 package cn.itcast.digui; import java.io.File; /** * 递归删除demo目录中全部文件包含目录 * 分析: * A:封装目录 * B:获取改目录下的全部文件或者目录 * C:遍历改file数组,得到每个File对象 * D:推断该file对象是都是目录 * 是:回到B * 否:删除 * @author Admi

gcc编译过程、C语言编译过程分析、环境变量设置、linux文件夹结构和用途介绍、常用文件和目录的操作命令、文件类型

参考链接:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html http://blog.csdn.net/novrose/article/details/7670477 http://blog.sina.com.cn/s/blog_7d5d42b40100ulqn.html 一.大小写后缀的区别 .s     汇编语言源程序;汇编.S     汇编语言源程序;预处理,汇编 小写的s文件,在后期阶段不在进行预处理操作,所以

如何让文件夹内所有文件名显示在一个Excel文件

如何让文件夹内所有文件名显示在一个Excel文件 我们如何才能做到,让某个文件夹内的所有文件的名称,自动生成一个Excel文件或TXT记事本文件: 意思就是说,文件夹内的所有的文件的名称,自动显示在Excel单元格中或记事本里面. 要想实现这样的功能,非常简单,仅仅使用一个非常简单的DOS命令,就实现了! 方法/步骤 一.所需DOS命令 dir [drive:][path] /b > [drive:][path]filename 二.应用实例 如下图,在D盘中,有一个名称为“TQIPC”的文件夹

maven在打war包时将资源文件打包到classes目录下

可以利用maven插件的机制将资源文件打到classes目录下 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <!--将类文件打成jar包--> <archiveClas

01 安装apache php配置 时区 环境变量 安装mysql 虚拟主机 文件夹访问权限 目录别名

php介绍 简介与历史 应用领域: php运行环境 php语言运行原理 安装apache: PHP的命令行运行模式(独立运行): 配置apache以运行php网页 配置php的基本运行环境 确定php配置文件(php.ini)的位置: 配置时区: 设置环境变量 检测apache配置文件语法 配置数据库连接机制 安装mysql数据库 虚拟主机配置 端口监听: 主机配置关键项 配置文件夹访问权限 主机别名设置 文件夹访问控制的文件控制方式 目录别名设置Alias 多站点配置: php介绍 简介与历史

Java web 项目读取src或者tomcat下class目录下的xml文件或者properties文件

//生成一个文件对象: File file = new File(getClass().getClassLoader().getResource("test.xml").getPath()); //直接得到一个输入流: InputStream in = getClass().getClassLoader().getResourceAsStream("test.xml"); //在当前线程获取--这个方法不大稳定 //String path = Thread.curr