标签: uglifyjs

为什么建议使用concat然后uglify,后者可以同时使用uglify?

我一直看到让JS文件准备好生产的建议是concat然后uglify.

例如这里,在约曼的咕噜任务上.

默认情况下,流程为:concat - > uglifyjs.

考虑到UglifyJS可以同时进行连接和缩小,为什么你需要同时使用两者?

谢谢.

uglifyjs gruntjs grunt-contrib-concat

39
推荐指数
2
解决办法
2万
查看次数

使用UglifyJS插件进行Webpack优化会导致运行时错误

我有一个通过webpack捆绑的同构React应用程序.

我有2个入口点对应2个捆绑文件输出:vendors.jsapp.js.

当运行webpack-dev-server或没有任何优化标志进行编译时,一切正常.但是,只要我尝试使用Uglify插件,编译后的输出就会包含错误.

我试过了:

vendors.js
app.js

或者在配置中:

vendors.js

但都会导致相同的运行时错误(未定义的变量).

有什么明显可能导致这种情况吗?Uglify是否过度热心并且删除了不应该的东西?

javascript uglifyjs reactjs webpack

37
推荐指数
1
解决办法
4万
查看次数

使用UglifyJS缩小多个文件

是否可以使用UglifyJS压缩多个文件?

就像是...

uglifyjs -o app.build.js appfile1.js appfile2.js ...
Run Code Online (Sandbox Code Playgroud)

另外,我在Windows命令提示符下通过NodeJS运行Uglify

javascript node.js uglifyjs

36
推荐指数
2
解决办法
3万
查看次数

如何通过grunt-contrib-uglify按顺序缩小js文件?

我有一个如下目录:

/folder/b.js
/folder/jQuery.js
/folder/a.js
/folder/sub/c.js

我想按顺序在一个js文件缩小所有这些js文件:

jQuery.js - > a.js - > b.js - > c.js

问:
1.如何通过grunt-contrib-uglify来实现?(实际上,有很多文件,单独指定所有源文件路径是不切实际的)

2.btw,如何在调试时获取未经文明化的文件,并在发布时获得缩小的单个文件,而无需更改html中的脚本标记(以及如何编写脚本标记)?

javascript node.js uglifyjs gruntjs grunt-contrib-uglify

36
推荐指数
4
解决办法
3万
查看次数

使用Yeoman应用程序中的Grunt Build缩小后出现Angular"Unknown Provider"错误

我在grunt buildYeoman生成的Angular应用程序上遇到问题,使用Coffee和Slim,所有库都是最新的.(该应用程序刚刚在几天前使用最新的生成器生成.)

grunt buildgrunt server这两个最初的罚款.但经过几天的开发使用后grunt server,我发现grunt build已完全停止工作.

我修复了一些不同的问题.最大的一点就是我不得不完全放弃Slim用于我的索引文件并使用直接HTML,因为grunt build在发布时,莫名其妙地删除了80%的索引文件/dist.

不幸的是,在我几乎解决了所有问题后,我开始在我的一个Angular指令中收到此错误:

未捕获错误:未知提供者:aProvider < - a

问题似乎在于uglify.我认为这可能与此处报道的问题相同,但我并不十分确定.我尝试了许多解决方案,但唯一对我有用的是从我的coffeescript手动生成干净的js文件,将文件复制到其中/dist,然后将路径写入dist/index.html.

显然这不是最优的.我确信在Grunt中有一个更简洁的方法(可能完全从构建过程中删除缩小,就像其他用户在上面的链接中所做的那样),但我是新手并且尚未弄清楚如何要做到这一点.无论哪种方式,它都是一种解决方法.

我的Gruntfile非常基本:我只在默认文件中添加了grunt-connect-proxy,grunt-contrib-sass和grunt-slim.事实上,我试图引入一个干净的,新生成的Gruntfile,但它没有更好的构建.

失败的指令如下.错误实际上出现在控制器的第一行,$scope.showInput = false.令人沮丧的是,一切都很好grunt server.我建立的那一刻,它完全崩溃了.

myModule.directive "editable", ->

  controller = ($scope) ->
    $scope.showInput = false

    $scope.saveContent = -> 
      $scope.toggleContent()
      $scope.save()

  linker = (scope, element, attrs) ->    
    scope.toggleContent = -> 
      scope.showInput = not scope.showInput
      setTimeout((-> element.find('input').focus()), 100)

  return DDO = 
    restrict: 'E' …
Run Code Online (Sandbox Code Playgroud)

javascript uglifyjs angularjs gruntjs yeoman

31
推荐指数
1
解决办法
2万
查看次数

如何从uglifying/optimization中排除某些requireJS文件

我有一个正在使用grunt进行构建和部署的工作requirejs项目.如果根本不使用优化,那么构建工作没有问题,我得到一个大的js文件来在生产中部署它.

我遇到的问题是,我有一些外部框架(如angularJS),我已经有了它的最小化/优化版本,并且不想再次优化它.

目前没有优化我通过我的gruntfile中的单独路径配置包含此框架的缩小版本.而在我的普通main.js中,我有非缩小版本用于开发.

现在我想使用优化器来优化我自己的代码,但是不要优化外部框架.但是外部框架应该包含在生成的大javascript文件中.基本上我想告诉优化器他应该在某些情况下使用原始文件.

我可以这样做吗?

我只找到了一个全局排除选项,因此有些模块根本不包含在生成的优化js中.

这是我的咕噜声配置:

requirejs: {
            compile: {
                options: {
                    baseUrl: "<%= pkg.folders.jsSource %>",
                    name: "../external-libs/almond-0.1.1",
                    include: "main",
                    mainConfigFile: "<%= pkg.folders.jsSource %>/main.js",
                    out: "<%= pkg.folders.build + pkg.name + '-' + pkg.version %>/js/main.js",
                    //logLevel: 0,
                    optimize: "uglify2",
                    //optimize: "none",
                    paths: {
                        'angular':'../external-libs/min/angular-1.0.4',
                        'jquery':'../external-libs/min/jquery-1.7.2',
                        'jquery.mobile':'../external-libs/min/jquery.mobile-1.2.0',
                        'adapter': '../external-libs/min/jquery-mobile-angular-adapter-1.2.0',
                        'moment': '../external-libs/moment-1.6.2.min',
                        'iscroll': '../external-libs/min/iscroll-4.2.5',
                        'iscrollview': '../external-libs/min/jquery.mobile.iscrollview-1.2.6',
                        'add2Home': '../external-libs/min/add2home',
                        'config/config': "config/<%=configDatei%>"
                    }
                }
            }
        },
Run Code Online (Sandbox Code Playgroud)

这是main.js的相关部分:

require.config({
        paths:{
            'angular':'../external-libs/angular-1.0.4',
            'jquery':'../external-libs/jquery-1.7.2',
            'jquery.mobile':'../external-libs/jquery.mobile-1.2.0',
            'adapter': '../external-libs/jquery-mobile-angular-adapter-1.2.0',
            'moment': '../external-libs/moment-1.6.2.min',
            'iscroll': '../external-libs/iscroll-4.2.5',
            'iscrollview': '../external-libs/jquery.mobile.iscrollview-1.2.6',
            'add2Home': '../external-libs/add2home'
        },
        shim:{ …
Run Code Online (Sandbox Code Playgroud)

require requirejs uglifyjs gruntjs uglifyjs2

27
推荐指数
2
解决办法
2万
查看次数

gulp ngmin + uglify无法正常工作

我有以下gulp任务:

gulp.task('scripts', function() {
return gulp.src(['app/js/app.js', 'app/config/config.js', 'app/js/controllers.js', 'app/js/directives.js' , 'app/js/filters.js',  'app/js/footer.js',
                 'app/js/guideTour.js', 'app/js/mobileBanner.js', 'app/js/services.js', 'app/js/youtube.js', 'app/js/dataSync.js', 'app/js/addthis.js'])
//.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('default'))
.pipe(concat('main.js'))
.pipe(ngmin())
.pipe(gulp.dest('app/dist/js'))
.pipe(rename({suffix: '.min'}))
.pipe(uglify())
.pipe(gulp.dest('app/dist/js'))
.pipe(livereload(server))
.pipe(notify({ message: 'Scripts task complete' }));
});
Run Code Online (Sandbox Code Playgroud)

问题是连接文件也是ngmin()的输出,工作正常,但在解密代码后,某些东西中断,我得到以下错误.

没有具体的指标从哪里开始调试.

堆栈跟踪:

Error: [$injector:unpr] http://errors.angularjs.org/1.2.9/$injector/unpr?p0=eProvider%20%3C-%20e
at Error (native)
at http://localhost:8000/angular/angular.min.js:6:449
at http://localhost:8000/angular/angular.min.js:32:125
at Object.c [as get] (http://localhost:8000/angular/angular.min.js:30:200)
at http://localhost:8000/angular/angular.min.js:32:193
at c (http://localhost:8000/angular/angular.min.js:30:200)
at Object.d [as invoke] (http://localhost:8000/angular/angular.min.js:30:417)
at http://localhost:8000/angular/angular-route.min.js:10:302
at Object.q [as forEach] (http://localhost:8000/angular/angular.min.js:7:380)
at http://localhost:8000/angular/angular-route.min.js:10:248 
Run Code Online (Sandbox Code Playgroud)

uglifyjs angularjs gulp ngmin

23
推荐指数
2
解决办法
1万
查看次数

grunt-contrib-uglify不会解析"let"关键字吗?

我收到一个错误,

'意外的令牌:名字(bazz)'

当我的咕噜声任务正在运行uglify时.我在那一行上唯一注意到的是我使用'let'关键字而不是'var',所以我不确定为什么会抛出这个错误.

我有一个if else语句,每个都有let varName,即:

function foo (bar) {
    if (condition) {
        let bazz = fn();
        //doSomething with bazz
        _.assign(bar, bazz);
    } else {
        let bazz = fn2();
        //doSomething different with bazz
        _.assign(bar, bazz);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以通过var bazz = {};在if else子句之前使用它来改变它,但我想避免这种情况,因为我必须将bazz分配给fn()和fn2().

想知道是否有其他人遇到过这个以及他们做了什么来修复它.提前致谢!

javascript uglifyjs grunt-contrib-uglify

23
推荐指数
1
解决办法
8126
查看次数

Javascript缩小为什么是false替换为!1并且使用!0

我正在使用Enyo2编写一个应用程序,它带有一个基于UglifyJS的缩小工具.我注意到了:

var t = false
Run Code Online (Sandbox Code Playgroud)

被替换为

var t=!1
Run Code Online (Sandbox Code Playgroud)

同样的方式将被替换为!0.我确信有一个很好的解释,我找不到它.任何的想法?

javascript minify uglifyjs

20
推荐指数
3
解决办法
4085
查看次数

如何缩小嵌套属性

我正在使用terser-js缩小我的代码.

输出:

a.prototype.a = ...
a.prototype.b = ...
a.prototype.c = ...
Run Code Online (Sandbox Code Playgroud)

我想要的是:

var h = a.prototype
h.a = ...
h.b = ...
h.c = ...
Run Code Online (Sandbox Code Playgroud)

请注意,我无法手动编写它,因为输入是从中生成的TypeScript.

javascript uglifyjs

20
推荐指数
1
解决办法
236
查看次数