//自定义任务
module.exports = function (grunt) {
// 项目配置
var http = require('http');
var qs = require('querystring');
var fs=require("fs"); function write(name,temp){
fs.writeFile("./release/"+name,temp,"utf8",function(err){
if(err){
grunt.log.error('BODY: ' + err);
}
});
} grunt.initConfig({
minJs:{
version:"0.9.7",
rootPath:"./online/",
resource:[{src:"RongIMClient.js",nameList:"RongIMClient.min.js,RongIMClient-0.9.7.min.js",operate:"pack"},
{src:"emoji-0.9.2.js",nameList:"RongIMClient.Emoji-0.9.2.min.js",operate:"pack"},
{src:"protobuf.js",nameList:"protobuf.min.js",operate:"uglify"},
{src:"swfobject.js",nameList:"swfobject.min.js",operate:"uglify"},
{src:"voice-0.9.1.js",nameList:"RongIMClient.voice-0.9.1.min.js",operate:"pack"},
{src:"xhrpolling.js",nameList:"xhrpolling.min.js",operate:"uglify"}],
env:"Release"
}
});
grunt.registerTask('minJs', '自定义压缩js文件', function () { this.async(); grunt.log.writeln('Processing task...'); var options = {
hostname: 'tool.lu',
port: 80,
path: '/js/ajax.html',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
grunt.config("minJs.resource").forEach(function(x){
fs.readFile(grunt.config("minJs.rootPath")+ x.src,"utf8",function(err,data){
if(err){
grunt.log.error(err);
return;
}
if(grunt.config("minJs.env")==="Release"){
data=data.replace(/\["navUrl-Debug"\]/g,"[\"navUrl-Release\"]");
}
var post_data = {
code: data,
operate: x.operate
};
var req = http.request(options, function (res) {
res.setEncoding('utf8');
var chunk="";
res.on('data', function (data) {
chunk+=data;
});
res.on("end",function(){
var temp=JSON.parse(chunk);
if(temp.status===true){
x.nameList.split(",").forEach(function(name){
write(name,temp.text);
});
}else{
grunt.log.error(temp.message);
}
})
});
req.on('error', function (e) {
grunt.log.error('problem with request: ' + e.message);
});
req.write(qs.stringify(post_data));
req.end();
});
}); });
};

grunt 自定义任务实现js文件的混淆及加密的更多相关文章

  1. grunt压缩多个js文件和css文件

    压缩前的工程目录: 1.安装js,css需要的插件 使用npm安装:npm install grunt-contrib-uglify --save-dev  -------->安装js压缩插件 ...

  2. js压缩、混淆和加密

    最近看到有些论坛在讨论js压缩.混淆和加密的问题,特意找了些资料看了下,现在总结一下: 1.关于三者的定义与区别 压缩:删除 Javascript 代码中所有注释.跳格符号.换行符号及无用的空格,从而 ...

  3. DotNetNuke-DNN Module模块引用自定义CSS或者JS文件

    当新增一个module时,有时会引用自定义的或者第三方CSS.JS文件. 1.添加自定义的CSS时,可以直接在module的根目录下添加module.css,然后框架会自动加载此CSS: 2.这个比较 ...

  4. 前端开发环境之GRUNT自动WATCH压缩JS文件与编译SASS文件环境下Ruby安装sass常见错误分析

    前言: 1.sass编译为css文件,早先时刻写css,后来看了sass挺不错的,于是在新的项目中开始使用上了sass.(grunt需要ruby环境,所以需要先安装ruby,sass环境) ①安装ru ...

  5. GruntJs安装及使用入门(自定义grunt任务,合并压缩js、css)

    一.Grunt.js简介(实现自动化) 1)简要说明: 1.GruntJs是基于node的javascript命令行工具,可以自动化构建.测试.生成文档的项目管理工具: 2.使用GruntJs可以自动 ...

  6. 如何写一个自定义的js文件

    自定义一个Utils.js文件,在其中写js代码即可.如: (function(w){ function Utils(){} Utils.prototype.getChilds = function( ...

  7. ExtJS4.x动态加载js文件

    动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...

  8. JS的压缩、混淆、加密

    参考: 博客园:js压缩.混淆和加密 知乎:前端如何给 JavaScript 加密(不是混淆)?  (阿里聚安全有回答问题) 站长工具  (在线JS压缩加密工具) Obfuscator (在家JS压缩 ...

  9. 使用JS对字符串进行MD5加密

    md5.js /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorith ...

随机推荐

  1. 如何通过反射来创建对象?getConstructor()和getDeclaredConstructor()区别?

    1. 通过类对象调用newInstance()方法,适用于无参构造方法: 例如:String.class.newInstance() public class Solution { public st ...

  2. Saddle Point ZOJ - 3955 题意题

    Chiaki has an n × m matrix A. Rows are numbered from 1 to n from top to bottom and columns are numbe ...

  3. redis缓存在项目中的使用

    关于redis为什么能作为缓存这个问题我们就不说了,直接来说一下redis缓存到底如何在项目中使用吧: 1.redis缓存如何在项目中配置? 1.1redis缓存单机版和集群版配置?(redis的客户 ...

  4. supervisor安装、配置和运行

    supervisor是python写的进程管理工具,supervisor能够批量对进程执行启动,停止,重启等操作,有效提高了运维效率.注意supervisor只能管理前台进程,supervisor会自 ...

  5. 宽度搜索(BFS)中求最短路径问题理解记录

    借助ACM1242题深入理解迷宫类最短路径搜索并记录路径长度的问题及解决方法:这是初次接触优先队列,尤其是不知道该怎样去记忆在结构体重自定义大小比较的符号方向,很容易混淆符号向哪是从大到小排列,向哪是 ...

  6. uboot 的命令体系

    1.代码位置 (1)uboot命令体系的实现代码在uboot/common/cmd_xxx.c中.有若干个.c文件和命令体系有关.(还有command.c  main.c也是和命令有关的) 2.传参方 ...

  7. Sublime Text3 安装Markdown

    Sublime Text3是一款给力的文本编辑器,通过安装插件可以编辑Markdown文本,在编辑Markdown文本的同时可以实时预览编辑效果. 安装准备: 找到菜单栏:Preferences → ...

  8. Jade模板引擎学习(一)安装及基本语法

    Jade是一款高性能简洁易懂的模板引擎,Jade是Html的Javascript实现,在服务端(NodeJS)及客户端均有支持. 一.功能 客户端支持  超强的可读性 灵活易用的缩进 块扩展 代码默认 ...

  9. unity ugui消息透传

    公司要做一个这东西. A是滑动区域,ScrollRect组件. B是各种选项. C是拾取到鼠标(或触点)的选项. D是拖放区域. 大概要求是这样. 因为B的条目很多,放在A里可以滑动查看.如果要选择一 ...

  10. 【bzoj2038-小z的袜子】莫队算法

    莫队例题. 莫队学习:https://www.cnblogs.com/Paul-Guderian/p/6933799.html 本题 分子是sigma(c(sum[a[i]],2)),分母是sigma ...