IntelliJ 中的 UglifyJS 文件观察器在构建期间缩小已经缩小的文件

UglifyJS file watcher in IntelliJ minifies already minified files during build

我在 IntelliJ IDEA 中设置了一个 UglifyJS 文件观察器,它在我编辑时效果很好——我修改了源 js,在它旁边自动创建了缩小版本。

然而,当我 运行 一个 Ant 构建时,它将缩小版本复制到构建工作目录中,观察者 "helpfully" 创建它们的双重缩小版本 (*.min.min.js) 在构建工作目录中,不行。

我已经将观察者的范围设置为 'src' 模块,但显然这并没有按照您的预期进行,因为当 Ant 将文件复制到 'build'模块。当我使用 IDEA 手动从 src 复制单个文件进行构建时发生。

我不知道如何设置它以包含 *.js 但排除 *.min.js,这确实是正确的做法。 (Uglify 应该内置它似乎很明智,但据我所知并没有。)

除了摆脱观察者并编写构建脚本来进行缩小,或者仅复制原始 js 版本并让观察者(重新)创建缩小的版本之外,最好的方法是什么?

感谢 IDEA forum 上的一位乐于助人的评论者,让这个工作正常进行。关键是设置一个自定义范围,我之前尝试过但失败了。

我最终得到的模式是这样的,对于任何有类似需求的人:

file[src]:*.js&&!file:*min.js*

使 'src' 模块成为当前模块然后打开 dlg 并从主观察器配置 window 的下拉列表中选择它显然实际上并没有被该模块过滤。单击 ... btn,然后从打开的 dlg 中选择它,另外我还添加了一个显式文件名模式以排除已经缩小的文件。

根据我的测试(最小的 Ant 测试和手动将文件复制到 IDEA 中的 'build'),现在工作得很好。

这是个老问题,可能当时守望者还没有这个功能

使用 JetBrains 'macro' 代码可以解决 'min.min.min.js' 问题。

$FileNameWithoutAllExtensions$.js -m --source-map -o $ContentRoot$\prod\js$FileNameWithoutAllExtensions$.min.js

我也总是将 'Scope' 设置为 'Current File';为什么 运行 对未更改的文件进行丑化? (我假设任何第 3 方 JS 库都已经缩小)。