- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下文件:package.json
{
"name": "uglify",
"devDependencies": {
"grunt": "^1.0.1",
"grunt-contrib-uglify": "^3.0.0"
}
}
还有以下文件:Gruntfile.js
module.exports = function(grunt) {
grunt.initConfig({
uglify: {
options: {
beautify: true,
mangle: {
properties: true
}
},
log_sum_9: {
src: 'log_sum_9.js',
dest: 'log_sum_9.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('log_sum_9', ['uglify:log_sum_9']);
}
还有以下文件:log_sum_9.js
(function() {
var
sum = "2+3+4",
calc = function(operation) {
return eval(operation);
}
;
console.log(calc(sum));
})();
然后我做:
安装所需的 NodeJS
模块:
$ npm install
丑化 log_sum_9.js
:
$ grunt log_sum_9
然后我得到丑化后的文件:log_sum_9.min.js
:
!function() {
var sum = "2+3+4", calc = function(operation) {
return eval(operation);
};
console.log(calc("2+3+4"));
}();
两个脚本都能正常工作:
$ node log_sum_9.js
9
$ node log_sum_9.min.js
9
我的问题是丑化文件 log_sum_9.min.js
没有改变变量的名称:sum
, calc
, 操作
(所有这些变量都是局部变量)。
如果文件 log_sum_9.js
的内容被引入以下在线混淆器:https://www.javascriptobfuscator.com/Javascript-Obfuscator.aspx
然后得到如下代码:
var _0x257f = ["\x32\x2B\x33\x2B\x34", "\x6C\x6F\x67"];
(function() {
var _0xb897x1 = _0x257f[0],
_0xb897x2 = function(_0xb897x3) {
return eval(_0xb897x3)
};
console[_0x257f[1]](_0xb897x2(_0xb897x1))
})()
您可以看到前面的 3 个变量:sum
、calc
、operation
已更改名称。
如果你把上面的代码放到文件:log_sum_9.online.js
,那么你可以:
$ node log_sum_9.online.js
9
(它也能正常工作)
我的问题是:
我如何配置文件:Gruntfile.js
来混淆前 3 个变量?
最佳答案
grunt-contrib-uglify ,(据我所知)不提供与您在帖子中链接到的在线工具相同级别的混淆 - 它似乎使用 JavaScript 十六进制转义代码/序列对字符串进行编码。
然而,grunt-contrib-uglify利用 uglify-js为 mangling 提供选项名字。您可以将 toplevel
和 eval
属性的 mangle
值设置为 true
。
Gruntfile.js
uglify
任务中的options
可以设置如下:
// ...
options: {
beautify: true,
mangle: {
properties: true,
toplevel: true, // <-- Add this
eval: true // <-- Add this
}
},
// ...
注意:在修改名称时,您需要努力确保您的代码仍能按预期运行。 可能有一些您不想被破坏的名称(例如,jQuery
是一个很常见的名称)。 uglify-js
文档的摘录如下:
When mangling is enabled but you want to prevent certain names from being mangled, you can declare those names with
--mangle reserved
— pass a comma-separated list of names...
要排除某些名称在你的 grunt uglify
任务中被破坏,你可以使用 reserved
属性提供一个名称数组:
例如
以下配置破坏了除operation
和jQuery
之外的所有名称:
// ...
options: {
beautify: true,
mangle: {
properties: true,
toplevel: true,
eval: true,
reserved: ['operation', 'jQuery'] // Exclude mangling specific names.
}
},
// ...
关于javascript - 使用 grunt-contrib-uglify 丑化 javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970696/
我只想在我保存的单个文件上运行coffee lint和coffee compile。我的项目中有成百上千个CoffeeScript文件,而编译它们都需要太多时间。 这是我的Gruntfile: mod
我正在使用 grunt-contrib-compass 来处理我的 .SCSS 文件 compass: { dist: { options: { cssDir: 'www/st
不幸的是,grunt-contrib-watch和 grunt-contrib-connect看起来不太好。 关于 grunt-contrib-connect readme它说: Note that
我是 nodeJS 和 grunt 的新手。我在这个项目中有这个 Gruntfile,我想对我项目中的所有 html 文件进行实时重新加载,这样我就不必一直刷新浏览器来检测新的更改。不知何故,我遇到了
我已经根据这些下载并构建了open cv open cv docs . 我正在尝试编译这个 Eigenfaces demo ,我收到以下错误。 fatal error: 'opencv2/contri
我有两个目录 src 和 compiled。我想使用 Grunt Watch 确保从 src 到 compiled 的单向数据同步.作为中间步骤,我想编译 *.less 文件以及使用 ES6 语法编写
我创建了一个 lein 项目, 比使用 eclips 的 dev-dependency 更新它的 project.clj 我跑了“lein deps” 它下载了所有依赖项 但是在 my.m2/repo
我有一些在 RStudio 中完美执行的 R 代码,但是当我在 cmd 中运行它时,我收到以下错误。 Installing package into 'C:/Users/Anish/Documents
我正在尝试为上下文强盗问题 (https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part
序曲: Ant-Contrib 为安装和启动提供了一个很好解释的 wiki 页面 ([ http://ant-contrib.sourceforge.net/#install][1] )。 事实上,只
当我尝试使用 Ant-contrib 的 FOR 循环时遇到以下错误: Invalid type class org.apache.tools.ant.taskdefs.optional.script
我正在使用DapperExtensions v4.0.30319,并且试图让Dapper.Contrib知道我的架构不是DBO。我提供了: public class EngineMapper : Cl
他们无论如何要直接生成缩小的 js 吗?我不想使用其他命令,例如 grunt uglify 因为源映射不会指向咖啡而是指向 js 最佳答案 我明白你对源 map 的看法,但你仍然可以在一个链中使用 u
我是整个 JVM 方面的新手,正在尝试使用 clojure。我正在尝试加载 clojure-contrib 但失败了: # in bash $ java -cp /path/to/clojure.ja
我正在使用 ant,并且在 if/then/else 任务(ant-contrib-1.0b3.jar)上遇到问题。 我正在运行一些可以使用下面的 build.xml 进行简化的东西。 我期待从 'a
我正在使用grunt-contrib-jasmine运行我的JavaScript规范。运行规范时如何将调试输出写入控制台,即如何获取 console.log("something"); 在控制台中显示
占用的问题 我运行以下命令来安装旧版本的opencv-contrib-python(4.0.0.21)。然后发生错误,无法安装此软件包。如何解决此错误? pip install opencv-cont
互联网上是否有可用的 Wicket Contrib Examples 的源代码- CD应用程序?谢谢。 最佳答案 您说您在对 Don 的回答的评论中查看了“svn”;哪个SVN?是这个吗? http:
我在 Maven 中使用 FindBugs,使用以下配置: org.codehaus.mojo findbugs-mave
我的构建脚本中有以下任务。 我从我的 Mac 机器运行这个构建脚本。它给出了以下错误。 Problem: failed to cr
我是一名优秀的程序员,十分优秀!