问题标签 [uglifyjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用 UglifyJS + GruntJS 进行条件编译
我正在将grunt-bbb用于我正在处理的 JavaScript 项目。我很想使用 grunt 对 UglifyJS 的支持来使用条件编译,但我似乎无法让它工作。我正在尝试传递一个defines
uglify 任务的选项,但它似乎不起作用。
我的 grunt.js 文件如下所示:
我也尝试向对象添加一个except
属性mangle
,但这似乎也不起作用(它仍然会破坏文件......) UglifyJS 显然正在运行,但它似乎没有得到选项通过了。我也挖掘了代码,当console.log(grunt.config('uglify'));
我得到
这对我来说看起来是正确的......
有什么想法吗???
ruby-on-rails - Rails uglifier 是否应该对函数名进行 uglify (mangle) 处理?
我的 .js 文件被压缩并且变量被修改,但函数名称在 Heroku 上没有被修改(运行最新的 Rails 3.2.8 和最新的 uglify 1.3.0 gem)。
根据https://github.com/lautis/uglifier#usage,“mangle ”选项默认为 true。下面是我的配置。
来自生产.rb:
我也试过
但没有明显区别。
正如一位评论者所建议的那样,我确实尝试更改我的一个 .js 文件的内容,但没有产生任何影响。
Heroku 上压缩的预编译 .js 文件的输出示例:
似乎变量名被破坏了,但函数名没有。
任何想法为什么函数名称没有被破坏?或者这是不想要的行为,因为这样就很难从我的 Rails/js 代码中调用函数(即 javascript onclick 事件)。或者,如果函数名称被损坏,那些 onclick 调用也会被重命名为损坏的名称?
谢谢 :-)
javascript - 防止js缩小或编译javascript时可能导致错误的神秘符号
很遗憾,当我注意到一些奇怪的符号时,我只是在玩美妙的UglifyJS,这给了我缩小错误。这对我来说看起来很奇怪,因为我无法选择或复制它,而且它不是任何特殊字符。至少我知道(LF、CR、制表符或空格)。
在记事本++中,它看起来像这样:
如果我将光标放在第 95 行的开头并按退格键图片变成这样:
不过我可以删除。但我很好奇。另一方面,我宁愿通过正则表达式删除它,以确保这些不会破坏我的 js 文件。那么这是什么,我怎样才能找到它并用正则表达式或其他东西删除?
javascript - 如何使用 UglifyJS 检查未定义的标识符
我想使用 UglifyJS 解析器来检查在不能保证定义的情况下是否使用了一段代码中的任何标识符。
例子:
我意识到myfunc
并且myvar
不一定是未定义的(因为它们可能存在于范围内),但我想知道它们何时可能未定义。
echo "myfunc(myvar);" | uglifyjs
愉快地返回myfunc(myvar);
,我找不到任何选项来检查未定义的变量。
如果我运行 JSLint 并assume browser, window, node.js, etc
全部关闭,那么这就是我想要的结果。我想用 UglifyJS 做类似的事情,假设对环境没有任何影响(没有窗口、控制台、警报等)。
javascript - 防止uglifyjs重命名某些函数
我有一个函数,里面有一个构造函数。它创建一个新对象并返回它:
结果 uglify 将 Car 重命名为某个字母,当它返回时,它看起来对象名称只是某个字母。例如,在 chrome 中,它会说对象的类型是“t”。
有没有办法告诉 uglify 保留某些函数的名称?
javascript - 是否有适合 Javascript 1.7 尤其是 Firefox 扩展的编译器/压缩器库?
- 我查看了 Google Closure Compiler 并找到了这个。它不喜欢“const”、“let”和其他 Javascript 1.7 标签。
- UglifyJS 似乎也缺少对 Javascript 1.7 的支持。
- YUI Compressor 不接受像 getter/setter 这样的 ECMASCRIPT 功能
现在有没有支持 Javascript 1.7 功能的压缩器?我唯一需要的是清除注释/空格(GCC 的 WHITESPACE_ONLY 类似物)。
symfony - 无法在没有段错误的情况下在资产中使用过滤器 uglifyjs
看来我不能uglifyjs
在 Symfony2 上下文中使用带有资产的过滤器,因为它似乎会导致分段错误。
我的配置看起来像:
我的观点:
一旦我禁用过滤器,我就不再有错误。我有一个全新的节点安装,我有uglify-js@1.3.3 node_modules/uglify-js
javascript - 为什么这个 JavaScript 有效?
我正在查看来自 UglifyJS 的一些东西的输出,并且发生在一些代码中,如下所示:
运行该代码后a
是字符串。1
b
Hello, World!
乍一看,这似乎b
是undefined
因为它看起来像一个没有返回值的函数的结果被返回,但后面跟着一个逗号和一个字符串文字。
为什么这行得通?
为什么 UglifyJS 不只是执行匿名函数然后Hello, World!
作为下一条语句返回?
.net - Node JS 和 MS 构建 - 这可能吗?
我正在为 JavaScript 压缩编写 MS Build 任务,我希望我可以使用 Uglify 作为我的压缩提供程序。
由于 Uglify 是用 JavaScript 编写的,我显然需要一个 .NET 端口。幸运的是,似乎至少有两种可能的选择——Uglify CS和Uglify.NET。不幸的是,去年两者都没有看到一次提交,因此我想他们不支持 Uglify 的新版本 2 :)
考虑到这一点,我想知道有没有办法以某种方式从 .NET 构建任务中评估原始代码?或者更笼统地说,有没有办法从 .NET 调用 Node.JS?
我可以想象从我的任务中调用 Node.JS 服务,但是,这似乎是一种矫枉过正。
javascript - 使用逗号运算符链接多个函数定义
我在查看 Uglify-js 的源代码时发现了一些有趣的东西。在bin/uglifyjs
( ref ) 中定义了几个函数,如下所示:
考虑到 Uglify-js 是由专业人士编写的,并且在许多产品中使用,例如 JQuery,我不明白为什么代码不是这样编写的:
这将更清楚地表明这是两个局部变量。或者这个怎么样:
这使得defsym
和defval
函数在母函数的整个范围内都可用。
他们为什么会选择第一种语法?为什么不是其他语法?