gulp打包js多个文件夹并压缩混淆,编译ES6语法,及多个import依赖由一个入口打包成一个cdn

时间:2022-08-30 19:29:57

感觉和webpack的步骤差不多

首先安装gulp:参考上一篇

安装完之后

新建一个文件目录起名

在当前目录下打开cmd

执行:npm init

创建package.json文件

然后安装第一个插件gulp-uglify

执行:

cnpm install gulp-uglify --save-dev   (这里暂时都用淘宝镜像cnpm)

这时候已经可以开始压缩es5的js文件了,但是我们要编译es6语法,那就需要babel

执行:

cnpm install gulp-babel --save-dev

编译ES6还需要@babel/core    @babel/preset-env

执行:

cnpm install @babel/core --save-dev
cnpm install @babel/preset-env --save-dev

这时候我们需要的插件都安装好了,下面就差个入口的配置文件了

在当前目录下新建gulpfile.js的文件,文件内容如下↓

//1.这个gulp对象就可以配合插件来进行构建工作.
const gulp = require('gulp'); //2.引入gulp-uglify模块.返回的是1个函数.
const uglify = require('gulp-uglify'); //3.引入babel
const babel = require('gulp-babel'); gulp.task('babeljs', async function() {
gulp.src("src/**/*.js")
.pipe(babel({
presets: ['@babel/env']
}))//es6转es5
.pipe(uglify())
.pipe(gulp.dest('dist'))
}); 

这时候我们就可以开始打包压缩并编译es6语法的js了

执行:gulp  babejs

ok!编译完成,对比一下编译前后的代码,例子↓

前:

gulp打包js多个文件夹并压缩混淆,编译ES6语法,及多个import依赖由一个入口打包成一个cdn

后:

gulp打包js多个文件夹并压缩混淆,编译ES6语法,及多个import依赖由一个入口打包成一个cdn

我们可以看到代码已经压缩,同时也混淆编译成es5了

good

-------------------------------------下面进行依赖打包成cdn----------------------------------

我们可以看到上面有依赖代码并没有转化成我们平时看到的那种单一的js,还是有模块化

这时候我们需要一个插件webpack-stream

执行:

cnpm install webpack-stream --save-dev

装好以后在gulpfile.js文件里

gulp打包js多个文件夹并压缩混淆,编译ES6语法,及多个import依赖由一个入口打包成一个cdn

这时候我们都不需要babel和uglify插件了,webpack会自动帮我们编译然后压缩,想想还是webpack简单粗暴

然后执行: gulp onejs

ok!!看看打包后的代码,是不是感觉像jquery的源码的那种感觉

gulp打包js多个文件夹并压缩混淆,编译ES6语法,及多个import依赖由一个入口打包成一个cdn的更多相关文章

  1. 使用Node.JS监听文件夹变化

    使用Node.JS监听文件夹改变有许多应用场合,比如: 构建自动编绎工具 当源文件改变时,自动运行build过程,比如当你写CoffeeScript文件或SASS CSS文件时,保存之后可即时生成对应 ...

  2. vue项目打包,生成dist文件夹,如何修改文件夹的名字

    vue项目打包之后的dist文件目录是如下 如果想要修改dist或则static文件名称,需要打开config / index.js build: { // Template for index.ht ...

  3. gulp使用技巧-删除node_modules文件夹,解决目录层次太深删除报错的问题

    问题描述: 在使用gulp当中,自动生成的node_modules文件夹,因为文件目录层级太深,无法系统删除,用360粉碎工具也报错 解决方法: 使用npm中的插件rimraf,专门用于删除的模块插件 ...

  4. node.js 递归复制文件夹(附带文件过滤功能)

    1.简介: 很简单,写了一个node操作文件的小脚本,主要实现对目标文件夹中内容的复制.还顺带一个按照文件夹或者文件名过滤的功能. 2.应用场景 适合基于 node 环境的项目,项目打包的时候,配合 ...

  5. js 上传文件夹

    最近公司做工程项目,实现文件夹上传. 网上找了一天,发现网上很多代码都存在相似问题,最后终于找到了一个符合要求的项目. 工程如下: 这里对项目的文件传输功能做出分析,怎么实现文件夹上传的,如何进行文件 ...

  6. Node.js之删除文件夹(含递归删除)

    应用场景:比如像Eclipse这样的IDE,右击项目,出现选项,点击选项中的删除,就可以删除这个项目及其下的子目录包含文件(使用electron开发的桌面端项目多少都会用到). 核心代码如下: /** ...

  7. js上传文件夹

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助.此控件PC全平台支持包括mac,li ...

  8. 从零開始学习制作H5应用——V5.0:懊悔机制,整理文件夹,压缩,模板化

    经过前面四个版本号的迭代.我们已经制作了一个从视觉和听觉上都非常舒服的H5微场景应用,没有看过的请戳以下: V1.0--简单页面滑动切换 V2.0--多页切换.透明过渡及交互指示 V3.0--增加lo ...

  9. gulp 实现 js、css,img 合并和压缩

    前提条件,知道如何安装nodejs.gulp,这里不做介绍,可以自行google 实现此功能需要安装的gulp工具有如下 npm install gulp-htmlmin gulp-imagemin ...

随机推荐

  1. Linux 比较判断运算(if test)

    200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要是列举在shell命令中常出现的一些用来做比较的运算符,这些运算符是 ...

  2. substring -----截取字符串

    var str = "0123456789"; substring alert(str.substring(0));------------"0123456789&quo ...

  3. BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)

    zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队...2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞: 然而第一题巨鬼畜,想了40min发现似乎不可 ...

  4. js的异步的问题的再次理解

    *js是实实在在的单线程语言,在一小个时刻,在(js的执行对列)只有一个执行,一个没有完,另一个必须等待,什么都不做,只有抖着腿的等; *本来语言本身是同步的,之所以是异步执行,是因为在浏览器环境中, ...

  5. valgrind检测内存泄漏

    Valgrind 使用 用法:valgrind [options] prog-and-args [options]: 常用选项,适用于所有Valgrind工具 -tool=<name>最常 ...

  6. Bootstrap3基础 text-right&sol;left&sol;center 设置标题右对齐、左对齐、居中

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  7. mysql 水平分表技术

    这里做的是我的一个笔记. 水平分表比较简单, 理解就是: 合并的表使用的必须是MyISAM引擎 表的结构必须一致,包括索引.字段类型.引擎和字符集 数据表 user1 CREATE TABLE `us ...

  8. dig命令详解

    dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常 语法 dig(选项)(参数) 选项 @<服务器地址>:指定进行域名解析的域名服务器: -b<ip地址>:当主机 ...

  9. 【Python】第一篇:python基础&lowbar;1

    本篇内容 Python介绍 安装 第一个程序(hello,world) 变量 用户输入(input) 数据类型 数据运算 if判断 break和continue的区别 while 循环 一. Pyth ...

  10. SpringBoot学习(七)

    静态资源处理 spring Boot 默认的处理方式就已经足够了,默认情况下Spring Boot 使用WebMvcAutoConfiguration中配置的各种属性. 建议使用Spring Boot ...