本文在配置grunt基本环境的基础下,讲解如何使用grunt-contrib-uglify进行javascript压缩

本文只介绍了grunt-contrib-uglify插件的一种压缩方式适用于大部分情况,详细请看:https://www.npmjs.com/package/grunt-contrib-uglify

1、安装contrib-uglify

npm install grunt-contrib-uglify --save-dev

2、添加add.js 和 delete.js 源文件

//目录解构

reporter                      //根目录

    ++++build                 //打包输出目录
-------打包生成的文件 ++++src //源代码开发文件目录
-------add.js
-------delete.js Gruntfile.js //grunt项目配置文件
package.json //项目信息文件(查看依赖)

add.js

var nj = 09;
var ij = 10;
var add = function(a,b){
  return a+b;
}
add(nj, ij);

delete.js

var a = 19;
var b = 20;
var deletes = function(a,b){
  return a-b;
}
deletes(a, b);

3、配置Gruntfile.js

module.exports=function(grunt){
console.log("进入了Gruntfile.js文件")
//任务配置,所有插件的配置信息
grunt.initConfig({
//获取package.json的信息
pkg:grunt.file.readJSON('package.json'), //uglify 插件的配置信息
uglify: {
options: {
banner:'/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
     '<%= grunt.template.today("yyyy-mm-dd") %> */' // 配置打包后文件头部描述
},
my_target: {
    files: {
    'build/<%= pkg.name %> - v<%= pkg.version %>.min.js': ['src/add.js','src/delete.js']
    }
  }
}
}); //加载grunt-contrib-uglify
grunt.loadNpmTasks('grunt-contrib-uglify');
//告诉grunt当我们在终端中输入grunt时需要做些什么(注意先后顺序)
grunt.registerTask('default',['uglify']);
};

options.banner:是打包后的输出文件头部显示的注释,一般我们使用package.js里的name、version等来描述。

mytarget.files:是基础文件的打包配置

  • build是打包后的输出目录。名字可自定义,再此我用的package.json的name和version作为压缩后的名字
  • 被打包文件,可以是个数组,将多个指定路径的文件打包到一个文件下。

注意:

  • 以下两句很重要,我们下载安装了uglify,还要将插件uglify加载进来
//加载grunt-contrib-uglify
grunt.loadNpmTasks('grunt-contrib-uglify');
//告诉grunt当我们在终端中输入grunt时需要做些什么(注意先后顺序)
grunt.registerTask('default',['uglify']);//在此编写uglify这个字符串,是为了执行grunt的时候,就执行这个插件。
  • 第二步在配置打包文件,和打包后的输出文件以及路径
my_target: {
files: {
'build/<%= pkg.name %> - v<%= pkg.version %>.min.js': ['src/add.js','src/delete.js']
}
}

4、执行grunt命令进行打包

//执行grunt出现一下消息代表打包成功

D:\Project\grunt_demo>grunt
进入了Gruntfile.js文件
Running "uglify:my_target" (uglify) task
>> 1 sourcemap created.
>> 1 file created 172 B → 206 B Done.

打包之后的文件展示:

/*! grunt_demo - v1.0.1 - 2019-03-15 */
var nj=9,ij=10,add=function(e,n){return e+n};add(nj,ij);var a=19,b=20,deletes=function(e,n){return e-n};deletes(a,b);

(完)

Grunt 使用(二)uglify插件压缩javascript代码的更多相关文章

  1. 使用Google Closure Compiler高级压缩Javascript代码

    背景 前端开发中,特别是移动端,Javascript代码压缩已经成为上线必备条件. 如今主流的Js代码压缩工具主要有: 1)Uglify http://lisperator.net/uglifyjs/ ...

  2. Cordova插件中JavaScript代码与Java的交互细节介绍

    在Cordova官网中有这么一张架构图:大家看右下角蓝色的矩形框"Custom Plugin"--自定义插件.意思就是如果您用Cordova打包Mobile应用时,发现您的移动应用 ...

  3. 林大妈的JavaScript基础知识(二):编写JavaScript代码前的一些简单工作

    在介绍JavaScript语法前,我们需要知道,学习语法必须要多利用手敲代码来巩固记忆.因此,由于JavaScript的特性,它不能像C++和Java一样独立地编译及运行,我们需要在调试运行JavaS ...

  4. 使用Google Closure Compiler高级压缩Javascript代码注意的几个地方

    介绍 GCC(Google Closure Compiler)是由谷歌发布的Js代码压缩编译工具.它可以做到分析Js的代码,移除不需要的代码(dead code),并且去重写它,最后再进行压缩. 三种 ...

  5. Gulp压缩JavaScript代码

    因为gulp是自动化工具,所以我们得告诉它,需要怎么做,才能达到我们的目的. 我们首先得新建一个js文件,用来编写我们的需求,以便gulp能按着我们的意愿来执行. 我将这个js文件取名叫gulpfil ...

  6. 微信小程序 - gulp插件压缩(代码、图片等)

    最后更新时间: 2018.7.18 :更新了所有package.json插件版本以及修复极个别问题. 2018.8.12 : 增加提示,所有标签必须闭合(不然打包会报错) 2018.10.13:需要用 ...

  7. 【Java】通过移除空行和注释来压缩 JavaScript 代码

    1. [代码]JavaScriptCompressor.java/** * This file is part of the Echo Web Application Framework (herei ...

  8. Cordova应用的JavaScript代码和自定义插件代码的调试

    我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果 ...

  9. python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

随机推荐

  1. Oracle PL/SQL编程之过程

    1.简介 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分,通过使用输出参数,可以将执行部分的数据传递 ...

  2. Oracle Net Configuration(监听程序和网络服务配置)

    1.在Oracle服务端和客户端都安装完之后,就需要配置监听程序和本地网络服务,以便外部程序和工具的访问,所以Oracle提供了两款自带的工具来配置它们分别是 Net Configuration.Ne ...

  3. 自适应网页设计(Responsive Web Design)别名(响应式web设计)转载阮一峰

    随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...

  4. 【微信小程序】采坑之scroll-view组件

    一.摘要 今天在使用scroll-view组件的时候发现结果跟预想的不一样.其实也不是第一次用了,同样的写法却出现了意料之外的效果,所以认定是bug了.博主使用的是2.3.0版本,所以之前的版本应该也 ...

  5. MySQL优化--表之间JOIN的关键字ON和Where (01)

    1. Join关键字,就是把多个表连接起来 而on和where都是条件,但是针对的对象不一样 1.1. 关键字 On是指怎样把两个表连接起来,如: on a.name = b.name 是一行一行的比 ...

  6. Struts2页面配置和访问servlet API

    一.Struts2页面配置 在struts2中页面可以分为两种,全局页面和局部页面. 1.全局页面: 在一个<package></package>标签内的多个action都要跳 ...

  7. org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.jboss.resteasy.plug

    之前做的项目是resteasy的上传,代码没有问题,断点都不进来呢. 我以为可以直接移植到SpringMVC,但是SpringMVC不支持MultipartFormDataInput , 用Multi ...

  8. ExtJs6编译之后上线报错无法查看到的解决方法

    最近Extjs编译后部署遇到了一个错误c is not a constructor,报错位置在app.js里,这根本没法找 解决方法:用命令sencha app build testing 编译之后, ...

  9. jmeter(1)——环境部署及安装

    公司人事还有老大都找我谈了一下2019的目标和技能成长规划,所以整体想了一下,技能方面,自己今年准备从性能测试开始着手,也去咨询了一下大神,切入点最好是工具.性能测试是一门非常庞大的课程,最初级,最入 ...

  10. Ajax介绍及爬取哔哩哔哩番剧索引追番人数排行

    Ajax,是利用JavaScript在保证页面不被刷新,页面链接不改变的情况下与服务器交换数据并更新部分网页的技术.简单的说,Ajax使得网页无需刷新即可更新其内容.举个例子,我们用浏览器打开新浪微博 ...