首页 > 解决方案 > Typescript 编译的代码不适用于混淆器

问题描述

我有一个用 Typescript 编写的节点项目。我正在尝试通过 Gulp 使用混淆器。但这似乎不起作用:

这是我的 gulp 文件:

const { series, src, dest, task } = require('gulp');
const uglify = require('gulp-uglify');
const javascriptObfuscator = require('gulp-javascript-obfuscator-fixed');

function CopyFile(){
    return src(['debug/*.js','debug/*.json'])
        .pipe(dest('dist'));
};
function Obfuscate(){
    return src('dist/*.js')
        .pipe(javascriptObfuscator())
        .pipe(uglify());
};
task("Release", series(CopyFile, Obfuscate));

这是我的 tsconfig

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es6",
    "sourceMap": true,
    "outDir": "debug",
    "resolveJsonModule": true
  },
  "exclude": [
    "node_modules"
  ]
}

所以顺序是,打字稿编译,然后复制到dist,然后混淆。这是我得到的错误:

GulpUglifyError: unable to minify JavaScript
Caused by: SyntaxError: Unexpected token: keyword «const»

这是什么意思?

标签: typescriptgulp

解决方案


https://www.npmjs.com/package/uglify-js

  • uglify-js仅支持 JavaScript (ECMAScript 5)。
  • 要缩小 ECMAScript 2015 或更高版本,请使用 Babel 等工具进行转译。

const是一个ES6 ("ES2015") 语言特性,因为你设置了"target": "es6". 您可以将 设置targetes5,或使用其他工具。


推荐阅读