Mozilla 附加组件拒绝 jQuery(尽管未被修改)

Mozilla Add-Ons rejecting jQuery (despite not being modified)

(注意,这是我遇到的问题的自答问答)

在尝试将 WebExtension 提交到 Mozilla Add-Ons 以获得 public 列表后,提交被审阅者拒绝并显示以下消息:

Your add-on includes a JavaScript library file that doesn't match any versions known to us. We require all add-ons to use unmodified release versions.

We accept JQuery/JQuery-UI libraries downloaded from 'ajax.googleapis.com', 'jquery.com' or 'jqueryui.com'; and used without any modification (downloaded and not copy pasted). Minified versions are better. (file-name change does not matter)

I'm sorry, but we cannot accept modified, re-configured or customized libraries.

同一问题的另一个症状: 来自 jQuery.

的几个关于初始验证的“对 innerHTML 的不安全分配”警告

但是,有问题的文件确实是从 jquery.com 下载的压缩版本,并非有意修改。 那么发生了什么事?

事实证明,即使您不手动修改文件,您也可以 运行 进入 git 为您完成的情况。

具体来说,自动处理 CRLF 行尾修改了 jQuery 的缩小文件,导致在以下情况下匹配失败:

  • 将 jQuery 下载到存储库中。
  • 提交文件:此时可以修改行结尾。
  • 为AMO建立档案;由于文件被修改,因此在审查中被拒绝。

为防止这种情况发生,可以将 jQuery 文件标记为二进制文件,这样 Git 在任何情况下都不会触及它们,无论特定 machine/repo 上的设置如何。

  1. 在文件夹链中的某处添加一个 .gitattributes 文件,直到 jQuery 所在的位置,并假设 jquery.min.js 是文件名:

    jquery.min.js -text
    
  2. 用新下载的副本替换jQuery的副本,并与.gitattributes一起提交。

对所有缩小的库执行此操作可能是个好主意。

如果库版本被识别,验证会显示如下提示: