gpt4 book ai didi

angular - 如何在 Angular 4.0 中使用正则表达式设置 UglifyJsPlugin 来处理变量

转载 作者:太空狗 更新时间:2023-10-29 17:56:50 24 4
gpt4 key购买 nike

我想 uglify Angualr 4 输出文件文件并破坏以 my_ 开头的特定变量。下面的命令行完全符合我的要求。我只想告诉 angular-cli 的 webpack 中的 uglifyJs 插件做同样的事情。

> uglifyjs script.js --source-map "filename='script.js.map',includeSources,content=inline" -o script.js -m
-c toplevel --mangle-props \"regex=/^my_[^_]{1}/\" --name-cache uglify-name-cache.json

目前我使用 eject 命令从 angular-cli 导出 webpack.config.js。但是我找不到任何关于如何告诉自动生成文件的 uglifyJsplugin 正则表达式和名称缓存参数的文档。这两者对我们的应用程序都至关重要。

From webpack.config.js produced by eject command:

new UglifyJsPlugin({
"test": /\.js$/i,
"extractComments": false,
"sourceMap": true,
"cache": false,
"parallel": false,
"uglifyOptions": {
"output": {
"ascii_only": true,
"comments": false
},
"ecma": 5,
"warnings": false,
"ie8": false,
"mangle": true,
"compress": {}
}
}),

这是关于如何使用 angualr eject 捕获自动生成的 weppack.config 并修改它的博客文章。 Angular-cli : How to ignore class names from being minified但是找不到任何关于如何为 ugllify 插件指定正则表达式的内容

提前致谢。

Some other helpful info:

"dependencies": {
"@angular/common": "4.4.6",
"@angular/compiler": "4.4.6",
"@angular/core": "4.4.6",
"@angular/http": "4.4.6",
"@angular/platform-browser": "4.4.6",
"@angular/platform-browser-dynamic": "4.4.6",
"@angular/router": "4.4.6", },
"devDependencies": {
"@angular/cli": "1.5.0",
"@angular/compiler-cli": "4.4.6",
"@types/node": "7.0.43",
"clean-webpack-plugin": "0.1.17",
"codelyzer": "3.2.2",
"copy-webpack-plugin": "4.2.0",
"uglify-js": "3.1.8",
"webpack": "3.8.1"
}

最佳答案

webpack-uglifyjs 插件中有一个错误,它没有将 nameCache 值传输到 uglifyjs。此错误已在 ver 1.1.0 中修复。

必须创建 nameCache,然后使用另一个插件将其保存到文件中。

这进入 webpack.config.js:

   const WriteNameCachePlugin = require(‘./write-name-cache-plugin’);
var nameCache = JSON.parse(fs.readFileSync(path.join(process.cwd(),“uglify-name-cache.json”), “utf8"));

...

new UglifyJsPlugin({
“test”: /\.js$/i,
“extractComments”: false,
“sourceMap”: true,
“cache”: false,
“parallel”: false,
“uglifyOptions”: {
“output”: {
“ascii_only”: true,
“comments”: false
},
“ecma”: 5,
“warnings”: false,
“ie8": false,
“nameCache”: nameCache,
“mangle”: {
properties: {
regex: /^my_[^_]{1}/,
reserved: [“$”, “_”]
}
},
“compress”: {}
}
}),
...

这进入 write-name-cache-plugin.js

   const fs = require(‘fs’);

var opt;

function WriteNameCachePlugin(options) {
opt = options;
}


WriteNameCachePlugin.prototype.apply = function(compiler) {
compiler.plugin(‘done’, function() {
fs.writeFileSync(opt.fileName, JSON.stringify(opt.nameCache, null, 4), “utf8");
});
};

module.exports = WriteNameCachePlugin;

关于angular - 如何在 Angular 4.0 中使用正则表达式设置 UglifyJsPlugin 来处理变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47216595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com