马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

gulp压缩混淆AngularJS+RequireJS

  [复制链接]
查看7565 | 回复4 | 2017-4-10 16:42:18 | 显示全部楼层 |阅读模式
RequireJS模块的合并压缩还是比较简单的,但是遇到AngularJS,在压缩混淆合并就有些问题,在网上找了些资料,大部分都没个解决方案,只有自己琢磨了
经过多次混淆压缩,以下成功的处理了混淆跟压缩,但是无法合并
//引入模块
var gulp = require("gulp");
var jshint = require("gulp-jshint");
var uglify = require("gulp-uglify");
var ngmin = require("gulp-ngmin");
var concat = require('gulp-concat');
var cssmin  =require("gulp-clean-css");
var annotate = require("gulp-ng-annotate");
var stripDebug = require("gulp-strip-debug");
gulp.task("jsHint",function(){
    gulp.src(["./product/js/*.js","./libs/**/*.js"])
        .pipe(jshint())// 进行检查
        .pipe(jshint.reporter("default"));// 对代码进行报错提示
})
gulp.task("testCssmin",function(){
    gulp.src(["./product/css/*.css"])
        .pipe(cssmin())
        .pipe(gulp.dest("./dabaofinancing-gupiao/product/css/"));
    gulp.src(["./libs/css/*.css"])
        .pipe(cssmin())
        .pipe(gulp.dest("./dabaofinancing-gupiao/libs/css/"));
})
gulp.task("jsmin",function(){
    gulp.src(["./*.js"])
        .pipe(annotate())
        .pipe(ngmin({dynamic: false}))
        .pipe(annotate({outSourceMap: false}))
        .pipe(uglify({//模块化文件不能进行混淆处理不然会导致angular模块丢失
            mangle:false,
            compress:true
        }))
        .pipe(gulp.dest('./dabaofinancing-gupiao/'));
        //.pipe(uglify())
        //.pipe(gulp.dest('./dabaofinancing-gupiao/'));
    gulp.src(["./product/*.json"])
        .pipe(gulp.dest('./dabaofinancing-gupiao/product/'))
    gulp.src(["./product/js/*.js"])
        .pipe(annotate())
        .pipe(ngmin({dynamic: false}))
        .pipe(stripDebug())//给模块文件格式化
        .pipe(annotate({outSourceMap: false}))
        .pipe(uglify({
            mangle:true,//混淆
            compress:true//压缩
        }))
        .pipe(gulp.dest('./dabaofinancing-gupiao/product/js/'))
        //.pipe(uglify())
        //.pipe(gulp.dest('./dabaofinancing-gupiao/product/js/'));
    gulp.src(["./libs/js/*.js"])
        .pipe(annotate())
        .pipe(ngmin({dynamic: false}))
        .pipe(annotate({outSourceMap: false}))
        .pipe(uglify({
            mangle:true,//混淆
            compress:true//压缩
        }))
        .pipe(gulp.dest('./dabaofinancing-gupiao/libs/js/'));
        //.pipe(uglify())
        //.pipe(gulp.dest('./dabaofinancing-gupiao/libs/js/'));
})
var src = ["img","svgs"]

gulp.task("copy",function(){
    for (var i = 0; i < src.length; i++) {
        var path = "./product/"+src[i]+"/**/*.*";
        var output = './dabaofinancing-gupiao/product/'+src[i];
        gulp.src(path)
        .pipe(gulp.dest(output));
    };
    gulp.src(["./*.html"])
        .pipe(gulp.dest('./dabaofinancing-gupiao/'));
    gulp.src(["./product/*.html"])
        .pipe(gulp.dest('./dabaofinancing-gupiao/product/'));
    gulp.src(["./*.properties"])
        .pipe(gulp.dest('./dabaofinancing-gupiao/'));

})

gulp.task("default", ["testCssmin", "jsmin", "copy"]);
在模块里面我们需要以数组的形式来保证变量名在混淆之后不会丢失:define(['angular', 'text!product/addAddress.html','common'], function (angular, tpl,com) {
    //angular会自动根据controller函数的参数名,导入相应的服务
    return {
        controller:["$scope","$location","$routeParams", "$http",function ($scope,$location,$routeParams, $http){       }],        tpl: tpl
    };
});然后就可以通过命令行去执行混淆压缩了,如果有能够有办法有合并的方法欢迎来讨论
无奈丶雨季残花 | 2017-4-10 16:42:55 | 显示全部楼层
如果有能够有办法有合并的方法欢迎来讨论
ibcadmin | 2017-4-10 16:53:33 | 显示全部楼层
哎呦我去 必须顶  稀客啊
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
无奈丶雨季残花 | 2017-4-10 16:57:32 | 显示全部楼层
ibcadmin 发表于 2017-4-10 16:53
哎呦我去 必须顶  稀客啊

忙忙碌碌,休息一会就上来看看滴
Amy尾巴 | 2017-4-10 17:00:02 | 显示全部楼层
9666
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则