丑化失败。意外字符'`'

Uglification failed. Unexpected character '`'

gulp-uglify无法对这段代码进行uglify:

    var alertString = `<?xml version="1.0" encoding="UTF-8" ?>
        <document>
          <alertTemplate>
            <title>${title}</title>
            <description>${description}</description>
          </alertTemplate>
        </document>`

它抱怨角色:`。该字符对苹果的JS框架有效。 我在 uglify 包中看不到任何忽略这些字符和其中的文本字符串的内容。我是否遗漏了文档中的某些内容?

Gulp-uglify 还没有对 ECMAScript 2015(又名 ES6,又名 Harmony)的官方支持,但稍加修改就可以使用开发中的存储库。

操作方法:

  1. 打开控制台并输入

cd node_modules/gulp-uglify

  1. 编辑package.json

dependencies": { "uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony" },

  1. 控制台输入:

npm update

准备好再次运行.pipe(uglify())


备用解决方案

  1. 通过npm下载以下内容:

npm install --save-dev gulp-uglify gulp-babel babel-preset-es2015

  1. gulpfile.js中添加以下要求:

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

  1. gulp任务如下:

gulp.task('uglify', function(){ gulp.src('*.js') .pipe(babel({ presets: ['es2015'] })) .pipe(uglify().on('error', function(e){ console.log(e); })) .pipe(gulp.dest('js')); });

这样做是将所有 EcmaScript 2015 JS 代码转换为 EcmaScript5,然后对其进行丑化。

ES6 在 gulp-uglify 的新版本 gulp-uglify-es 中得到支持。如果您使用 Gulp 4,您也可以使用 .browserlistrc。以下是我正在使用的需要 Chrome 和 Firefox 56 支持的项目示例。

gulpfile.js

    const uglify = require('gulp-uglify-es').default;

    .pipe(babel({
        presets: ['@babel/preset-env'],
        compact:false
     }))
     .pipe(uglify())

.browserlistrc (read more on browserlist)

last 2 chrome versions
firefox 56

使用 Flask + Jinja2 我已经解决了如下类似问题:

  1. 烧瓶

    render_template('template.html', text='"+`Text\nhere`+"')

  2. 应用丑化 ...

  3. JS

    var result = "{{text}}"; // ---> "" + `Text\nhere` + "";