在Angular项目中使用uglify-js替代terser,可以避免这个漏洞。具体步骤如下:
npm install uglify-js --save-dev
angular.json
文件中,将optimization
的值从true
改为false
,并添加以下配置项:"optimization": {
"scripts": true,
"minify": false,
"terser": false,
"uglify": {
"warnings": true,
"mangle": false,
"compress": false,
"output": {
"ascii_only": true,
"beautify": true,
"comments": false,
"indent_level": 2
}
}
},
package.json
文件中添加以下配置项:"scripts": {
"build:prod": "ng build --prod --aot --build-optimizer=false",
"build:prod:uglify": "ng build --prod --aot --optimization=true --build-optimizer=false"
},
angular.json
文件中的build
选项中添加以下配置项:"options": {
"optimization": true,
"outputPath": "dist",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/styles.scss"
],
"scripts": [
"./node_modules/uglify-js/tools/node.js",
"./node_modules/uglify-js/bin/uglifyjs",
"--force",
"--mangle",
"--mangle-props",
"--mangle-regex",
"/regex/",
"--compress",
"--output",
"./dist/main.js",
"--source-map",
"--source-map-url",
"/main.js.map",
"./dist/main.js.map"
]
}
npm run build:prod:uglify
进行构建代码,即可使用uglify-js替代terser,解决安全漏洞问题。