【问题标题】:UglifyJS append files without removing whitespaceUglifyJS 附加文件而不删除空格
【发布时间】:2020-05-21 07:12:44
【问题描述】:

我正在使用UglifyJS 来破坏和压缩我的 SPA 的 JavaScript 代码。 这对于生产来说是可以的,但是我想在调试模式下编译时附加所有的 JS 文件。

我尝试省略 -c -m 选项(压缩和修改),但它不起作用,它只是继续压缩和修改源文件

我想避免使用其他工具,甚至最糟糕的是编写自己的工具来附加一组 JavaScript 文件

编辑

test0.js 输入文件:

var test1 = 0;
var test2 = 1;
var test3 = test1 + test2;

test1.js 输入文件:

var test4 = 0;
var test5 = 1;
var test6 = test4 + test5;

我运行的命令(未指定修改或压缩):

uglifyjs test0.js test1.js -o out.js

我得到的输出:

var test1=0;var test2=1;var test3=test1+test2;var test4=0;var test5=1;var test6=test4+test5;

我期望的输出:

var test1 = 0;
var test2 = 1;
var test3 = test1 + test2;
var test4 = 0;
var test5 = 1;
var test6 = test4 + test5;

我可以确认 UglifyJS 正在从文件中删除所有 CR/LF 字节,我想避免这种情况

【问题讨论】:

  • UglifyJS 不应该接触源文件...它将一个或多个 JS 文件作为输入,然后写入一个输出文件(由 -o 标志指定)
  • 您能否尝试将您的问题简化为展示问题的最小示例?例如创建两个内容最少的 js 文件,对它们运行 uglify 并显示结果?这将有助于解决问题
  • @F.P 我搞定了,请看一下
  • @GianlucaGhettini 你在使用 Uglify 而不使用 Webpack 之类的东西吗?

标签: javascript single-page-application minify bundling-and-minification uglifyjs


【解决方案1】:

以您的示例为例,我们可以看到 uglify 实际上既不破坏也不压缩您的代码。它只是删除空格。

发生这种情况是因为(与处理元级别代码的大多数事情一样)您的代码被解析为AST。这是您的源代码的抽象表示,仅包含实际命令

这意味着任何格式都或多或少地在 uglify 执行的第一步中丢失,并且无法恢复。

另见this issue。开发时实现可追溯性的更好方法是使用源映射,uglify 可以使用--source-map 选项生成。

这将创建一个单独的文件.map,该文件位于您的 uglified 文件旁边,并包含有关哪一行包含哪些代码的信息。

【讨论】:

  • 说得有道理,好吧,我去找.map文件
  • @GianlucaGhettini 似乎较新的版本还提供了--beautify 选项,在输出代码时基本上会“重新缩进”您的代码。但是你永远不会得到原始文件的结尾或空格。但源地图仍然是行业标准和最佳方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
相关资源
最近更新 更多