使用 gulp uglify minify 编译 angular 1.5 组件代码,当有 `` 引用 html 时不工作

compile angular 1.5 component code with gulp uglify minify, not working when there are `` quoted html

'use strict'

angular.module('dog.Component',[])
.component('dogComponent',{
  // templateUrl:'home.html',  // this line will be fine
  template:`<h1>Anything Here will screw up the code</h1>`
})

所以我使用 gulp 将所有 angular js 代码编译成一个。似乎在 angular 1.5.8 或关闭时,当使用 `` 引号时,uglify 无法缩小代码..

'use strict';

var gulp = require('gulp');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify')


var indexTarget=[
  './page.index/*.js'
]
gulp.task('index',function(){
  return gulp.src(indexTarget)
          .pipe(concat('index.js'))
          .pipe(uglify())
          .pipe(gulp.dest('page.index/'))
  })


gulp.task("watch", function(){
  gulp.watch(jstarget, ["js"])
})

哪位有经验的可以快速看一下?

反引号是 ES2015 的一个特性,但 gulp-uglify 只识别 ES5 语法。最简单的解决方案是首先将您的源代码通过 babel 进行管道传输,babel 可以将 ES2015 语法转换为 ES5 语法,然后对其进行 uglify。

var gulp = require('gulp');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify')
var babel = require('gulp-babel');

var indexTarget=[
  './page.index/*.js'
]
gulp.task('index',function(){
  return gulp.src(indexTarget)
          .pipe(concat('index.js'))
          .pipe(babel({ presets: ['es2015'] }))
          .pipe(uglify())
          .pipe(gulp.dest('page.index/'))
  })

应该可以,并且可以让您安全地使用 ES2015 语法。您需要将 gulp-babelbabel-preset-es2015 添加到您的项目中。也许也 babel-cli 虽然我认为安装 gulp-babel 应该将其作为依赖项引入

你还需要告诉babel使用es2015插件。您可以通过创建 .babelrc 文件或将配置添加到 package.json 来实现。最低配置是创建 .babelrc 包含:

{
  "presets": ["es2015"]
}

检查 https://babeljs.io/docs/learn-es2015/ 以查找可让您直接使用的 ES2015 语法的哪些部分。对于某些功能(例如生成器),您可能还需要添加一个 polyfill,但只需在构建管道中包含 babel 就可以使用很多功能。