0
我有一個簡單的TypeScript類,我將其轉換爲ES5,然後與webpack 2捆綁在一起,並使用UgilfyJS3最小化。UglifyJS不會在TypeScript生成的JavaScript中修改函數名稱
我希望UgilfyJS也可以修改函數名showGreeting()
(見下面的代碼),但是在縮小的js文件中,它不是。有沒有其他選項可以設置縮小函數名稱,還是我正在做一些操作? 我知道變量名不會被破壞,但爲什麼不是函數名?
原來這裏是打字稿文件:
export class Greeter {
constructor(greeting: string) {
this.greeting = greeting;
}
greeting: string;
showGreeting() {
console.log(this.greeting);
}
}
const myGreeter = new Greeter("hello, world");
myGreeter.greeting = "howdy";
myGreeter.showGreeting();
這是包括UglifyJS的webpack.config:
const path = require('path');
const webpack = require('webpack');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
entry: './test.ts',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
devtool: "source-map",
resolve: {
extensions: ['.ts', '.tsx', '.js']
},
module: {
loaders: [
{ test: /\.tsx?$/, loader: 'ts-loader' }
]
},
plugins: [
new UglifyJSPlugin({
mangle: {
toplevel: true,
eval: true
}
}),
]
};
而生成的輸出的Javascript包含以下行:
[function (e, t, r) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: !0
});
var n = function() {
function e(e) {
this.greeting = e
}
return e.prototype.showGreeting = function() {
console.log(this.greeting)
},
e
}
();
t.Greeter = n;
var o = new n("hello, world");
o.greeting = "howdy",
o.showGreeting()
}
]);