问题标签 [uglifyjs2]

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.

0 投票
1 回答
408 浏览

javascript - UglifyJS2 是否支持 base64 编码的源内映射?

我正在使用UglifyJS2压缩 Browserify 的输出文件。Browserify 已经生成了自己的源映射,它像这样在文件的底部添加:

我的 JS 在我需要的文件之一中出现错误,但 Chrome 告诉我错误发生在 browserify 输出文件的某处,而不是一直指向我需要的文件。

in-source-map选项没有说明关于 base64 编码的任何内容,因此我没有将其设置为任何内容。

0 投票
1 回答
319 浏览

javascript - UglifyJS 2:cli -m 顶层的 api 等效项?

我正在尝试转换以下命令:

到 API 调用:

但我不知道如何设置“顶层”。设置toplevel:truemangle:'toplevel'不起作用。

0 投票
2 回答
1133 浏览

minify - 告诉 UglifyJS 跳过特定的代码区域

有没有办法告诉 UglifyJS 跳过特定的代码部分,可能使用如下注释:

我的用例与避免缩小将内联并以自定义方式解析以提高性能的函数有关。缩小会破坏简化的解析器。

0 投票
1 回答
1581 浏览

javascript - 井号 (#) 作为注释在 JavaScript 中开始?

井号 (#) 是否在 JavaScript 中开始注释?我有一个与 NPM 一起使用的网站,当我尝试使用 Grunt 缩小 JavaScript 时,Uglify 抛出了错误:

被引用的文件名似乎来自另一个 NPM 模块,这意味着他们知道自己在做什么。因此,当我转到 app/min-libs/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/cat.js 时,违规行说:

这是评论还是这个 NPM 模块的所有者知道一些超级机密的禁止 JavaScript 技术?

0 投票
1 回答
2244 浏览

gruntjs - grunt: uglify 生成警告后的 jshint

我在这里进行了搜索,并进行了相当长的谷歌搜索,但看不到任何明显的东西,尽管我警告说这是我第一次使用 jshint/uglify 和 grunt。

我有(为了简洁起见)2个测试JS文件:

我的 grunt 文件执行了许多构建任务,但基本上我运行 jshint 两次 - 一次在 src 上(如果有问题,请提前停止),然后一次在所有 concat/uglify 上确保最终文件输出仍然通过。

源代码(上图)上的 jshint 很有效,但是 jshint post 'build' 似乎失败了,因为 uglify 删除了几个分号。

我的 grunt 文件的相关部分(供参考):

我运行的 grunt 任务本质上是(再次,例如,减少):

jshint:source工作一种享受,jshint:dist没有并抱怨缺少分号。

uglify'd 脚本(供参考)是:

如您所见,两个 console.log 语句都删除了分号 - 看起来很安全。我能理解uglify为什么会这样做,也能理解jshint为什么抱怨它。

理想情况下,我想修改 uglify 以便它保留分号(尽管我可能会因此而激怒分号警察)虽然理想情况下我希望看到两者的选项 - 让 jshint 忽略分号问题,但是也变得丑陋将其留在里面。

任何帮助感激不尽!

干杯,特里

0 投票
3 回答
5739 浏览

javascript - 在使用 grunt usemin 和 rev 时使用 SourceMaps 进行 Uglify

我想将 javascript 错误记录到服务器,但堆栈跟踪对缩小的 JS 代码没有用。所以我正在考虑使用GetsentryRollbar,它在sourcemaps. 但我首先在努力创建源地图。

我收到此错误

“目标 (_build/js/app.js) 未写入,因为 src 文件为空。”

一旦它正确地创建了源映射,就会出现另一个问题,即rev重命名文件。我还需要留下未缩小的连接文件。

下面是我的 gruntfile.js(我已经删除了一些内容。)

更新


尝试了@Andy的解决方案,它仍然显示相同的错误"Destination (_build/js/app.js) not written because src files were empty.",并且在构建时也在下面说

不知从何dest得名。我的输出文件夹是_build.

UPDATE2:
请参阅以下链接以获得更好的解决方案
https://stackoverflow.com/a/20574196/148271 https://github.com/gruntjs/grunt-contrib-uglify/issues/39#issuecomment-14856100

0 投票
1 回答
81 浏览

requirejs - 可选择使用 pubnub

我们有一个可用于云 (AppEngine) 和内部部署的 Web 应用程序。

对于推送通知,我们在内部部署中使用 websockets,在 AppEngine 上使用 pubnub(因为 Google 频道对我们来说不够可靠)。

我们有一个简单的 JavaScript 模块,它在运行时抽象出两种通信架构之间的差异(基于服务器提供的配置信息)。

我们使用 requirejs 和 uglifyjs2 将所有 JavaScript 组件组合到一个文件中以供生产使用(而我们使用原始文件进行调试)。

我们现在的问题是,pubnub JavaScript 模块会在它被包含后(即在我们的软件调用它之前)尝试联系它的服务器。这当然在内部是不可取的(导致防火墙日志条目......)。

到目前为止,我们找到的唯一解决方案是修改 pubnub.js 以将其中的一些代码放入模块初始化函数中,我们仅在知道确实需要 pubnub 时才调用该函数。但这当然意味着我们必须了解(并手动修改)每个新版本的 pubnub.js。

有替代方案吗?

0 投票
1 回答
1047 浏览

gruntjs - 如何合并源图

我正在使用 Grunt 构建一个项目: uglify 用于编写的 JS 文件,然后与已经缩小的库连接。

缩小的库已经有源映射。

是否可以将它们与 uglify 为编写的 JS 文件生成的合并?

最终app.js文件由以 sourcemap 注释结尾的代码块组成,如下所示:

这弄乱了缩小-> 原始匹配。随机文件和行与原始文件中其他地方的代码相关联。

有什么我可以做的,而不必使用单独的文件?

谢谢。

0 投票
1 回答
1252 浏览

javascript - 如何调试 Uglify 解析错误?

我正在丑化一个 JS 文件,刚刚开始获取

我需要遵循哪些调试步骤来跟踪它?

不用说,我已经尝试过搜索“name”和“(a)”等显而易见的东西,但它们都没有出现在文件中。由于我的输入文件是漂亮的 JS,因此查看“line:1 col:17726”所指的内容也会有所帮助。

0 投票
2 回答
680 浏览

javascript - 创建的源映射指向系统路径而不是相对路径

我正在使用UglifyJS2将我的 javascript 源文件缩小为一个大的缩小文件。这是我使用的相关代码:

minfile 本身包含源文件的绝对路径:

问题是,我传入的源文件不能公开访问,它们只编译到 minfile 中,只有 minfile 可以访问。因此,我的源映射似乎毫无意义,因为 Chrome(在我的情况下)试图加载http://mydomain.com/path/to/folder/jquery/js/jquery.js而不是读取我本地 fs 上的文件。

我究竟做错了什么?