//自定义任务
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. Good Bye 2015 C

    C. New Year and Domino time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  2. 007.C++构造函数

    1.一个引例 //class head class complex //class body {} { public: complex(double r=0, double i) :re(r), im ...

  3. PIP 批量更新改为清华这边的镜像更新

    之前pip批量更新的时候发现有些包无法更新,而且速度也特别慢,今天尝试了下清华的镜像,速度是真快 # coding=utf-8import pipfrom subprocess import call ...

  4. ZooKeeper食谱(八)

    使用ZooKeeper构造高级别应用的指南 在这个文章中,你将会发现使用ZooKeeper来实现高级别功能的指南.所有的它们在客户端上被实现而不需要ZooKeeper特别的支持.希望社区将注意到这些约 ...

  5. Nginx+Tomcat关于Session的管理

    前言 Nginx+Tomcat对Session的管理一直有了解,但是一直没有实际操作一遍,本文从最简单的安装启动开始,通过实例的方式循序渐进的介绍了几种管理session的方式. nginx安装配置 ...

  6. HDFS error

    错误信息描述: HDFS error: could only be replicated to 0 nodes, instead of 1;以及由此衍生出来的种种奇葩问题(具体的错误信息见后面),下面 ...

  7. NDK---使用,开发步骤

    使用NDk的场景: 1.某些方法,是使用C,C++本地代码实现的,然后,我想在Java中调用这些方法.这个时候,就需要使用到JNI技术. 应用NDK的时候,分两个部分,Java部分,JNI层部分,本地 ...

  8. JS高级之面试必须知道的几个点

    1.函数的3种定义方法 1.1 函数声明 //ES5 function getSum(){} function (){}//匿名函数 //ES6 ()=>{}//如果{}内容只有一行{}和ret ...

  9. 密码本(无bug版)

    main.cpp #include <stdio.h> #include <stdlib.h> #include "data.h" #include &qu ...

  10. windows10安装oracle11g报错ORA-01034、ORA-01078

    ORA-01034表示数据库实例未建立,可以先用管理员账号进入一个空白实例 sqlplus / as sysdba; 如果您当前使用的账号是安装oracle的账号,则不需要账号密码就可以登陆oracl ...