grunt 自定义任务实现js文件的混淆及加密
//自定义任务
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文件的混淆及加密的更多相关文章
- grunt压缩多个js文件和css文件
压缩前的工程目录: 1.安装js,css需要的插件 使用npm安装:npm install grunt-contrib-uglify --save-dev -------->安装js压缩插件 ...
- js压缩、混淆和加密
最近看到有些论坛在讨论js压缩.混淆和加密的问题,特意找了些资料看了下,现在总结一下: 1.关于三者的定义与区别 压缩:删除 Javascript 代码中所有注释.跳格符号.换行符号及无用的空格,从而 ...
- DotNetNuke-DNN Module模块引用自定义CSS或者JS文件
当新增一个module时,有时会引用自定义的或者第三方CSS.JS文件. 1.添加自定义的CSS时,可以直接在module的根目录下添加module.css,然后框架会自动加载此CSS: 2.这个比较 ...
- 前端开发环境之GRUNT自动WATCH压缩JS文件与编译SASS文件环境下Ruby安装sass常见错误分析
前言: 1.sass编译为css文件,早先时刻写css,后来看了sass挺不错的,于是在新的项目中开始使用上了sass.(grunt需要ruby环境,所以需要先安装ruby,sass环境) ①安装ru ...
- GruntJs安装及使用入门(自定义grunt任务,合并压缩js、css)
一.Grunt.js简介(实现自动化) 1)简要说明: 1.GruntJs是基于node的javascript命令行工具,可以自动化构建.测试.生成文档的项目管理工具: 2.使用GruntJs可以自动 ...
- 如何写一个自定义的js文件
自定义一个Utils.js文件,在其中写js代码即可.如: (function(w){ function Utils(){} Utils.prototype.getChilds = function( ...
- ExtJS4.x动态加载js文件
动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...
- JS的压缩、混淆、加密
参考: 博客园:js压缩.混淆和加密 知乎:前端如何给 JavaScript 加密(不是混淆)? (阿里聚安全有回答问题) 站长工具 (在线JS压缩加密工具) Obfuscator (在家JS压缩 ...
- 使用JS对字符串进行MD5加密
md5.js /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorith ...
随机推荐
- ACE反应器(Reactor)模式(3)
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/18/595938.html 在服务器端使用Reactor框架 使用Reactor框架的服务器端 ...
- ZOJ 2532 Internship 求隔边
Internship Time Limit: 5 Seconds Memory Limit: 32768 KB CIA headquarter collects data from acro ...
- Mybatis批量更新详解
转:http://www.cnblogs.com/winkey4986/p/3915151.html Mybatis批量更新 批量操作就不进行赘述了.减少服务器与数据库之间的交互.网上有很多关于批量插 ...
- HDU1507二分图
Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- uboot 的命令体系
1.代码位置 (1)uboot命令体系的实现代码在uboot/common/cmd_xxx.c中.有若干个.c文件和命令体系有关.(还有command.c main.c也是和命令有关的) 2.传参方 ...
- Web Service快速入门
一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 那么它是如何做到这种跨语言,跨平台之间的调用呢? 其实它是以一个xml文件以及webservice这种服务来实现跨平台 ...
- JAVA--结果集已耗尽
有两个可能 1.rs ,state和conn没有关闭 rs.close(); state.close(); conn.close(); if(rs!=null) rs.close; if(sta ...
- bzoj 1635: [Usaco2007 Jan]Tallest Cow 最高的牛——差分
Description FJ's N (1 <= N <= 10,000) cows conveniently indexed 1..N are standing in a line. E ...
- bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍 ——中位数排序
Description 经过多年的积蓄,农夫JOHN决定造一个新的牛舍.他知道所有N(2 <= N <= 10,000)头牛的吃草位置,所以他想把牛舍造在最方便的地方. 每一头牛吃草的位置 ...
- 【BZOJ】1577: [Usaco2009 Feb]庙会捷运Fair Shuttle
[题意]公车从1开到n,有k群牛想从一个点到达另一个点,公车最多乘坐c个人,牛群可以拆散,问最多载多少牛到达目的地. [算法]贪心+堆 [题解]线段和点的贪心,一般有按左端点排序和按右端点排序两种方法 ...