如果您只是检查缩小的 js,您会看到代码已缩小,但您包含的每个 js 库在顶部都有自己的版权和许可信息(这是正确的),如下面的片段:
/**
* Copyright 2009 SomeThirdParty.
* Here is the full license text and copyright
*/
如果您真的想在 Rails 应用程序上实现完全缩小并摆脱 pagespeed 洞察力的 2% 额外压缩通知,您可以通过以下设置来实现:
config.assets.js_compressor = Uglifier.new(copyright: false)
或者
config.assets.js_compressor = Uglifier.new(output: { comments: :none })
注意 1:以上两种方法都会最小化您的 application.js 而无需任何注释。
注意 2:通过上述两种设置,uglifier 会从您的缩小 js 中删除所有版权信息,因此您的应用程序实现了 google pagespeed 所需的总缩小,并且您的分数获得了+1分。
但是,您不应避免包含您正在使用的代码的版权。大多数许可证(MIT、BSD、GPL ...)都要求您在重新分发库时保留版权和许可信息。当您允许浏览器从您的服务器或您的 CDN 下载该库的压缩副本时,您重新分发该库算作。因此,您应该在应用程序的某个位置包含版权和许可信息。
如何
您可以做的一件事是收集您在应用程序上使用的 js 库的所有版权信息,并将它们全部添加到 licenses.txt 中,并将其放在您的公共文件夹中。您的public/licenses.txt应该如下所示:
/**
* Unobtrusive scripting adapter for jQuery
* https://github.com/rails/jquery-ujs
*
* Requires jQuery 1.8.0 or later.
*
* Released under the MIT license
*
*/
[...and the rest copyrights here one after the other]
然后通过使用链接标签在应用程序的 html 头部指定此文件的位置(layouts/application.html):
<head>
<!-- License information of used libraries -->
<link rel="license" href="../licenses.txt">
</head>
rel=license表示:当前文档的主要内容被引用文档所描述的版权许可所覆盖。
最后,如果你想更正确地使用这个,你应该在缩小的 application.js 上只包含一条评论,以便让某人在哪里可以找到所有版权信息(以防万一……)。为此,请在 application.js 文件顶部添加以下注释:
/*!LC
* Copyright and Licenses: http://www.example.com/licenses.txt
*/
因此您的 application.js 可能如下所示:
/*!LC
* Copyright and Licenses: http://www.example.com/licenses.txt
*/
//= require jquery
//= require jquery_ujs
//= [..rest of your requires]
注意:我在开始时将此评论与!LC区分开来。您需要这个将正则表达式传递给 uglifier,因此它只允许对缩小的 js进行此评论。为此,请转到您的 production.rb 并放置以下内容:
config.assets.js_compressor = Uglifier.new(output: { comments: /^!LC/ })
Uglifier 将只允许在缩小的 js 文件顶部添加 !LC 注释,您不会仅收到一条评论的 pagespeed 洞察警告。如果你做了所有这些,你会完全没问题,你会在 pagespeed 洞察力上获得满分,你已经完全缩小了 .js 以获得最佳交付,并且你拥有所有版权以解决任何法律问题。