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 ...
随机推荐
- 如何通过反射来创建对象?getConstructor()和getDeclaredConstructor()区别?
1. 通过类对象调用newInstance()方法,适用于无参构造方法: 例如:String.class.newInstance() public class Solution { public st ...
- 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 ...
- redis缓存在项目中的使用
关于redis为什么能作为缓存这个问题我们就不说了,直接来说一下redis缓存到底如何在项目中使用吧: 1.redis缓存如何在项目中配置? 1.1redis缓存单机版和集群版配置?(redis的客户 ...
- supervisor安装、配置和运行
supervisor是python写的进程管理工具,supervisor能够批量对进程执行启动,停止,重启等操作,有效提高了运维效率.注意supervisor只能管理前台进程,supervisor会自 ...
- 宽度搜索(BFS)中求最短路径问题理解记录
借助ACM1242题深入理解迷宫类最短路径搜索并记录路径长度的问题及解决方法:这是初次接触优先队列,尤其是不知道该怎样去记忆在结构体重自定义大小比较的符号方向,很容易混淆符号向哪是从大到小排列,向哪是 ...
- uboot 的命令体系
1.代码位置 (1)uboot命令体系的实现代码在uboot/common/cmd_xxx.c中.有若干个.c文件和命令体系有关.(还有command.c main.c也是和命令有关的) 2.传参方 ...
- Sublime Text3 安装Markdown
Sublime Text3是一款给力的文本编辑器,通过安装插件可以编辑Markdown文本,在编辑Markdown文本的同时可以实时预览编辑效果. 安装准备: 找到菜单栏:Preferences → ...
- Jade模板引擎学习(一)安装及基本语法
Jade是一款高性能简洁易懂的模板引擎,Jade是Html的Javascript实现,在服务端(NodeJS)及客户端均有支持. 一.功能 客户端支持 超强的可读性 灵活易用的缩进 块扩展 代码默认 ...
- unity ugui消息透传
公司要做一个这东西. A是滑动区域,ScrollRect组件. B是各种选项. C是拾取到鼠标(或触点)的选项. D是拖放区域. 大概要求是这样. 因为B的条目很多,放在A里可以滑动查看.如果要选择一 ...
- 【bzoj2038-小z的袜子】莫队算法
莫队例题. 莫队学习:https://www.cnblogs.com/Paul-Guderian/p/6933799.html 本题 分子是sigma(c(sum[a[i]],2)),分母是sigma ...