Typescript 编译代码不适用于混淆器

Typescript compiled code doesn't work with Obfuscators

我有一个用 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"
  ]
}

所以顺序是,typescript 编译,然后复制到 dist,然后混淆。这是我收到的错误:

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

这是什么意思?

这意味着 uglify 不会说 es6。试试这个:

https://www.npmjs.com/package/gulp-uglify-es

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

  • uglify-js only supports JavaScript (ECMAScript 5).
  • To minify ECMAScript 2015 or above, transpile using tools like Babel.

const 是一个 ES6 ("ES2015") language feature,因为您设置了 "target": "es6"。您可以将 target 设置为 es5,或使用不同的工具。