如何解决 AEM 6.5 和 ECMA Script 6/ javascript 6 的缩小问题?

How to solve minification issue with AEM 6.5 and ECMA Script 6/ javascript 6?

我正在处理 AEM 6.5 实例,这是一个奇怪的问题。 我已将缩小引擎设置为 min:gcc,因为 min:yui 自 2012 年以来已弃用。

现在 min:gcc 在作者实例中只编译了几个 JS 文件,因为其他文件都抛出错误。但在发布实例中,它拒绝每个 JS 文件进行缩小。

现在的问题是我可以返回 "yui" 但是它也会抛出错误并且 FE 无能为力,因为 JS 文件不是由它们直接编写的,它们编写 ES6 代码并转译并给我们 ES5。此 ES5 转译代码被 YUI 和 GCC 拒绝。

他们如何解决 Babel 生成的文件中的问题?

如何走出困境?

由于您已经在使用转译器,您可以将缩小添加到 FE 管道并完全跳过 AEM 上的缩小。缩小是 OSGI 中的全局设置。如果您选择为不属于同一 FE 生态系统的其他一些 JS 文件启用它,请更改包含转译代码的 clientlibs 上的 'compilationLevel' 设置以忽略缩小。

您可以 "sort of" 通过将 compilationLevel 设置为空白来关闭单个 clientlib 的缩小。由于 JS 已经通过 FE 构建工具删除了空格,因此它不会受到 clientlib 管理器的影响,并与 AEM 的典型 clientlib 范例共存。

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    jcr:primaryType="cq:ClientLibraryFolder"
    categories="[clienlib-with-transpiled-code]"
    jsProcessor="[default:none,min:gcc;compilationLevel=whitespace]"
/>

我们最终做了一些 Sharath 在他的回答中提到的事情。 但是,我想强调我们面临的另一个问题。因此,为了绕过 Adob​​e Cloud Security 警告,我们在 AEM 中打开了缩小服务并单独添加了忽略 属性

jsProcessor="[default:none,min:none]"

添加 min:gcc;compilationLevel=whitespace 无法使用。

并且在 HTML 库 OSGi 服务中,当我们设置默认 js 和 css 处理器时,设置 min:gcc 导致默认 AEM 创作库缩小失败。

我们最好在 Author 中关闭缩小或将 js 处理器设置为 min:yui 即默认值。

经过 2 个月的解决类似问题后,这对我有用:

min:gcc;languageIn=ECMASCRIPT_2016;languageOut=ECMASCRIPT_2016;compilationLevel=simple;obfuscate=true

问题是“默认值:none”正在产生冲突,请尝试删除“默认值:none”