grunt 自定义任务实现js文件的混淆及加密

 1 //自定义任务
 2 module.exports = function (grunt) {
 3     // 项目配置
 4     var http = require(‘http‘);
 5     var qs = require(‘querystring‘);
 6     var fs=require("fs");
 7
 8     function write(name,temp){
 9         fs.writeFile("./release/"+name,temp,"utf8",function(err){
10             if(err){
11                 grunt.log.error(‘BODY: ‘ + err);
12             }
13         });
14     }
15
16     grunt.initConfig({
17         minJs:{
18             version:"0.9.7",
19             rootPath:"./online/",
20             resource:[{src:"RongIMClient.js",nameList:"RongIMClient.min.js,RongIMClient-0.9.7.min.js",operate:"pack"},
21                 {src:"emoji-0.9.2.js",nameList:"RongIMClient.Emoji-0.9.2.min.js",operate:"pack"},
22                 {src:"protobuf.js",nameList:"protobuf.min.js",operate:"uglify"},
23                 {src:"swfobject.js",nameList:"swfobject.min.js",operate:"uglify"},
24                 {src:"voice-0.9.1.js",nameList:"RongIMClient.voice-0.9.1.min.js",operate:"pack"},
25                 {src:"xhrpolling.js",nameList:"xhrpolling.min.js",operate:"uglify"}],
26             env:"Release"
27         }
28     });
29     grunt.registerTask(‘minJs‘, ‘自定义压缩js文件‘, function () {
30
31         this.async();
32
33         grunt.log.writeln(‘Processing task...‘);
34
35
36         var options = {
37             hostname: ‘tool.lu‘,
38             port: 80,
39             path: ‘/js/ajax.html‘,
40             method: ‘POST‘,
41             headers: {
42                 ‘Content-Type‘: ‘application/x-www-form-urlencoded‘
43             }
44         };
45         grunt.config("minJs.resource").forEach(function(x){
46             fs.readFile(grunt.config("minJs.rootPath")+ x.src,"utf8",function(err,data){
47                 if(err){
48                     grunt.log.error(err);
49                     return;
50                 }
51                 if(grunt.config("minJs.env")==="Release"){
52                     data=data.replace(/\["navUrl-Debug"\]/g,"[\"navUrl-Release\"]");
53                 }
54                 var post_data = {
55                     code: data,
56                     operate: x.operate
57                 };
58                 var req = http.request(options, function (res) {
59                     res.setEncoding(‘utf8‘);
60                     var chunk="";
61                     res.on(‘data‘, function (data) {
62                         chunk+=data;
63                     });
64                     res.on("end",function(){
65                         var temp=JSON.parse(chunk);
66                         if(temp.status===true){
67                             x.nameList.split(",").forEach(function(name){
68                                 write(name,temp.text);
69                             });
70                         }else{
71                             grunt.log.error(temp.message);
72                         }
73                     })
74                 });
75                 req.on(‘error‘, function (e) {
76                     grunt.log.error(‘problem with request: ‘ + e.message);
77                 });
78                 req.write(qs.stringify(post_data));
79                 req.end();
80             });
81         });
82
83     });
84 };

时间: 2024-10-16 15:57:50

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

前端开发环境之GRUNT自动WATCH压缩JS文件与编译SASS文件

前端开发环境之GRUNT-JAVASCRIPT任务运行器 前言: 1.sass编译为css文件,早先时刻写css,后来看了sass挺不错的,于是在新的项目中开始使用上了sass. 原方法: ①安装ruby ②编译sass文件(eg:style) sass style.scss style.css ③监控文件/文件夹的变化来自动编译sass文件 sass --watch style.scss:style.css #file sass --watch cssFilePath            

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

压缩前的工程目录: 1.安装js,css需要的插件 使用npm安装:npm install grunt-contrib-uglify --save-dev  -------->安装js压缩插件 npm install grunt-contrib-cssmin --save-dev  -------->安装css压缩插件 手动安装后,在package.json文件里,会自动将“grunt-contrib-uglify”加入,并且是当前grunt-contrib-uglify的最新版本,就如下面的

js压缩、混淆和加密

最近看到有些论坛在讨论js压缩.混淆和加密的问题,特意找了些资料看了下,现在总结一下: 1.关于三者的定义与区别 压缩:删除 Javascript 代码中所有注释.跳格符号.换行符号及无用的空格,从而压缩 JS 文件大小,优化页面加载速度. 混淆:经过编码将变量和函数原命名改为毫无意义的命名(如function(a,b,c,e,g)等),以防止他人窥视和窃取 Javascript 源代码,也有一定压缩效果. 加密:一般用eval方法加密,效果与混淆相似,也做到了压缩的效果. 从定义中可以看出,压

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

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

如何使用grunt压缩js文件

jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过.但是不会熟练使用grunt,那你就真的真的真的out了(三个“真的”重复,表 示重点).至于grunt的作用,这里不详细说了,总之你如果做web前端开发,你一定要用grunt.还有一点,它完全免费,没有盗版.既强大又免费的 东西,为何不用? 当然了,你如果你能找到更好的替代grunt的其他工具也是

uglifyjs2压缩混淆js文件

uglifyjs可以用来压缩混淆js文件,发布release版本应用利器.在StackOverflow浏览了一下,相比Google Closure和YUI compressor,uglifyjs被推荐的更多一点,YUI已经不再更新且部分作者也加入uglifyjs开发了. 1. 安装 安装可以通过npm安装. 下载node.js安装文件:http://nodejs.org/download/ npm包含在node.js中. 安装uglifyjs: sudo npm install [email p

grunt压缩js文件

使用grunt 工具管理js文件时有几个常用功能例如压缩合并等 首先安装node环境,安装grunt 在目录环境下建立自己的项目my_project 添加两个源文件 在项目根目录下创建package.json文件 { "name": "my_project", "version": "0.1.0", "devDependencies": { "grunt": "~*"

使用grunt完成requirejs的合并压缩和js文件的版本控制

最近有一个项目使用了 requirejs 来解决前端的模块化,但是随着页面和模块的越来越多,我发现我快要hold不住这些可爱的js文件了,具体表现在每个页面都要设置一堆 requirejs 的配置( baseUrl , paths 之类的). 不知谁说过,一些事重复做了三次,就该考虑一下自动化了,于是我小心翼翼的掏出了我的 grunt . 我们得使用 grunt-contrib-requirejs 这个插件来实现如上所说的自动化功能,这个就是根据 r.js 封装的 grunt 插件. 安装 gr

vue 自定义js文件 写方法

//全局函数方法 exports.install = function(Vue, options) { Vue.prototype.$popup = function(msg, time) { //msg 为内容 //time 弹窗显示时间 time = isNaN(time) ? 3000 : time; var m = document.createElement('div'); m.className="popupall" m.innerHTML = msg; document.