//自定义任务
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. ACE接受器-连接器模式

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/22/600191.html 接受器-连接器设计模式(Acceptor-Connector)使分 ...

  2. Codeforces Round #331 (Div. 2) A

    A. Wilbur and Swimming Pool time limit per test 1 second memory limit per test 256 megabytes input s ...

  3. Qt error ------ 出现Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly

    出现原因: 使用了不存在的对象 数组越界了 用 delete 释放未分配的内存空间,或者超过一次释放同个内存 比如: 顺序不能颠倒 正确: ui->setupUi(this); ui->t ...

  4. 希尔排序Shell sort

    希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第一块希尔排序介绍 准备待排数组[6 2 4 1 ...

  5. MySQL增删改查之查询

    (7)范围查询select * from car where price>40 and price<60   --查询价格在40-60之间的select * from car where ...

  6. 五分钟学习Java8的流编程

    1.概述 Java8中在Collection中增加了一个stream()方法,该方法返回一个Stream类型.我们就是用该Stream来进行流编程的: 流与集合不同,流是只有在按需计算的,而集合是已经 ...

  7. Spring MVC 与 CORS

    1. CORS 简介 同源策略(same origin policy)是浏览器安全的基石.在同源策略的限制下,非同源的网站之间不能发送 ajax 请求的. 为了解决这个问题,w3c 提出了跨源资源共享 ...

  8. python初步学习-python数据类型之number(数值)

    数据类型之 Number python number 数据类型用于存储数值. 数据类型是不容许改变的. 这就意味着如果改变 number 数据类型的值,将重新分配内存空间. python支持四种不同数 ...

  9. 科猫网项目总结(基于SSM框架)

    1.配置文件的添加 SSM整合需要web.xml配置文件,springmvc的配置文件,spring和mybatis整合的配置文件. 1.web.xml文件的配置 1.在WEB-INF下新建web.x ...

  10. Windows下基于python3使用word2vec训练中文维基百科语料(三)

    对前两篇获取到的词向量模型进行使用: 代码如下: import gensim model = gensim.models.Word2Vec.load('wiki.zh.text.model') fla ...