在Angular中,构建生产版本时,默认情况下会进行代码压缩和混淆,这可能导致类的名称在构建之后不再可用。如果你想保留类的名称,可以使用Angular的自定义webpack配置来实现。下面是一种解决方法:
webpack.config.js
的文件,并将以下代码添加到该文件中:const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
keep_classnames: true,
},
}),
],
},
};
这里使用了TerserPlugin
来进行代码压缩,同时设置keep_classnames
为true
,以保留类的名称。
angular.json
文件中找到architect.build.options
部分,并添加customWebpackConfig
选项,指向刚刚创建的webpack.config.js
文件。示例如下:"architect": {
"build": {
"options": {
"customWebpackConfig": {
"path": "./webpack.config.js"
},
...
},
...
},
...
}
ng build --prod
命令,构建生产版本。在构建完成后,你应该能够在应用程序中使用MyClass.constructor.name
来获取类的名称。请注意,这种方法会导致构建时间稍长,并且生成的代码体积可能会比默认构建更大。