GVKun编程网logo

如何用gulp-uglify缩小ES6功能?

14

关于如何用gulp-uglify缩小ES6功能?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angularroute中使用resolve在uglify压缩后问题解决、angularjs

关于如何用gulp-uglify缩小ES6功能?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angular route中使用resolve在uglify压缩后问题解决、angularjs – Gulp ngmin uglify无法正常工作、angularjs – 具有ES6功能的Angular应用程序的未来验证、angularjs – 提供者依赖注入和uglify特例等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

如何用gulp-uglify缩小ES6功能?

如何用gulp-uglify缩小ES6功能?

当我运行gulp时,出现以下错误:

[12:54:14] { [GulpUglifyError: unable to minify JavaScript]cause:{ [SyntaxError: Unexpected token: operator (>)] message: ''Unexpected token: operator (>)'', filename: ''bundle.js'', line: 3284, col: 46, pos: 126739 },plugin: ''gulp-uglify'',fileName: ''C:\\servers\\vagrant\\workspace\\awesome\\web\\tool\\bundle.js'',showStack: false }

令人反感的行包含箭头功能:

let zeroCount = numberArray.filter(v => v === 0).length

我知道我可以用以下替换它,以通过放弃ES6语法来纠正缩小错误:

let zeroCount = numberArray.filter(function(v) {return v === 0;}).length

如何通过gulp压缩包含ES6功能的代码?

答案1

小编典典

您可以像这样利用npmjs …

const gulp = require(''gulp'');const babel = require(''gulp-babel'');const uglify = require(''gulp-uglify'');gulp.task(''minify'', () => {  return gulp.src(''src/**/*.js'')    .pipe(babel({      presets: [''es2015'']    }))    .pipe(uglify())    // [...]});

这将在管道中尽早移植es6,并在缩小时将其作为广泛支持的“纯” javascript。


*正如 *注释中 所指出的那样, 可能需要注意的重要一点
是,核心babel编译器在此插件中作为对等依赖项提供。如果没有通过仓库中的另一个dep下拉核心库,请确保已将其安装在您的终端上。

综观对等体依赖性在gulp-babel作者是指定@巴贝尔/芯(7.x中)。不过,稍早的babel-core(6.x)也可以使用。我的猜测是作者(两个项目的人都一样)正处于重新组织其模块命名的过程中。无论哪种方式,两个npm安装端点都指向https://github.com/babel/babel/tree/master/packages/babel-
core,因此您可以使用以下任意一个…

npm install babel-core --save-dev

要么

npm install @babel/core --save-dev

angular route中使用resolve在uglify压缩后问题解决

angular route中使用resolve在uglify压缩后问题解决

问题

如下代码所示, 如果在angular中配置route的resolve时, 没有指定''PicLoader'', 则在压缩模式下(uglify), angular执行报错. 通过如下方式可以解决:

解决

$routeProvider
  .when("/pic", {
    controller: "ImageViewerCtrl",
    templateUrl: "image.html",
    resolve: {
      images: [''PicLoader'', function (PicLoader) {
        return PicLoader();
      }]
    }
  })

以上就是angular route中使用resolve在uglify压缩后问题解决的资料,后续继续补充相关资料,谢谢大家对本站的支持!

您可能感兴趣的文章:
  • AngularJs ng-route路由详解及实例代码
  • 微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
  • Angular 路由route实例代码
  • 浅析angularJS中的ui-router和ng-grid模块
  • Angularjs中UI Router的使用方法
  • 简单讲解AngularJS的Routing路由的定义与使用
  • AngularJs中route的使用方法和配置
  • Angularjs中UI Router全攻略
  • AngularJS 使用 UI Router 实现表单向导
  • angularJS中router的使用指南

angularjs – Gulp ngmin uglify无法正常工作

angularjs – 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' }));
});

问题是连接文件也是ngmin()的输出,工作正常,但是在解密代码后,某些东西中断了,我得到了following error。

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

堆栈跟踪:

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
解决方案是运行uglify任务,将 mangle选项设置为false。
即:.uglify({mangle:false})

整码:

gulp.task('scripts',function() { 
return gulp.src('app/js/**/*.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({mangle: false}))
.pipe(gulp.dest('app/dist/js'))
.pipe(livereload(server))
.pipe(notify({ message: 'Scripts task complete' }));
});

angularjs – 具有ES6功能的Angular应用程序的未来验证

angularjs – 具有ES6功能的Angular应用程序的未来验证

什么是在ES6(使用Traceur)中编写控制器,服务和指令的建议(如果有)未来的方法,以便大多数相同的代码可以与AngularJS 2.0一起使用.我意识到AngularJS 2.0仍然处于绘图板上,但如果我今天要开始一个新的应用程序,我会遵循哪种风格或约定,因此迁移到2.0将有望减轻痛苦.

声明一个类然后将对该类的引用传递给控制器​​或服务是我看到的一点:

var app = angular.module('myApp',[]);

class MainCtrl {
   ....
}

class MyService {
   ....
}

app.controller('MainCtrl',MainCtrl);
app.service('MyService',MyService);

是否应该将MyService类移动到一个单独的文件中以便将来可能只是导出它并让它可以注入?

当我使用AngularJS(< = 1.3.x)和ES6处理新项目时,要记住哪些其他事项? 更新
经过一番挖掘后,我写了一系列博客文章,在我的博客上谈论我的发现

解决方法

ngEurope的角度团队今天证实,Angular 2.0中的$controls,$scopes,$services和jqLit​​e将不再存在.还将有一个全新的路由器,他们打算在未来几个月内向后移植到1.3.

为了准备迁移,他们建议关注到目前为止已经在社区中发展的best practices/styles/conventions,并且当2.0准备就绪(明年某个时候)时,他们将找到从那里迁移的最佳方式.

此外,他们表示1.3将在2.0版本发布后至少一年半的时间内得到全面支持.

angularjs – 提供者依赖注入和uglify特例

angularjs – 提供者依赖注入和uglify特例

我使用了 angular-app的安全功能,并且在authorizationProvider中有一些时髦的东西

angular.module('security.authorization',['security.service'])

// You can add them as resolves to routes to require authorization levels
// before allowing a route change to complete
.provider('securityAuthorization',{

  requireUser: ['securityAuthorization',function(securityAuthorization) {
    return securityAuthorization.requireUser();
  }],$get: ['security','securityRetryQueue',function(security,queue) {
    var service = {

      requireUser: function() {
        //Stuff ...
        return true;
    };

    return service;
  }]
});

提供者将自身注入属性’requireUser’,该属性调用$get工厂方法返回的函数.现在,当我尝试对此进行uglify(grunt-contrib-uglify)时,它失败了

requireUser: ['securityAuthorization',function(securityAuthorization) {
    return securityAuthorization.requireUser();
  }]

使用未知提供者:eProvider< - e.我怎样才能缩小这个?我已经尝试了替代提供程序声明(从1.1.x开始,可以像普通工厂一样声明提供程序,即注入依赖项并让提供程序成为函数),但这也不起作用,因为它查找依赖项security.authorization模块.

解决方法

grunt-contrib-uglify的一个选项是 mangle

尝试将此添加到您的Uglify配置中:

uglify: {
  options: {
    mangle: false
  }
}

今天关于如何用gulp-uglify缩小ES6功能?的分享就到这里,希望大家有所收获,若想了解更多关于angular route中使用resolve在uglify压缩后问题解决、angularjs – Gulp ngmin uglify无法正常工作、angularjs – 具有ES6功能的Angular应用程序的未来验证、angularjs – 提供者依赖注入和uglify特例等相关知识,可以在本站进行查询。

本文标签: