如果您只检查缩小后的 js,您将看到代码已缩小,但您包含的每个 js 库在顶部都有自己的版权和许可证信息(这是正确的),如以下代码片段:
/**
* Copyright 2009 SomeThirdParty.
* Here is the full license text and copyright
*/
如果你真的想要实现 Rails 应用程序的完全缩小,并消除 Pagespeed Insights 的 2% 额外压缩通知您可以通过以下设置来做到这一点:
config.assets.js_compressor = Uglifier.new(copyright: false)
or
config.assets.js_compressor = Uglifier.new(output: { comments: :none })
NOTE1:以上两者都会最小化您的 application.js ,而无需任何注释。
NOTE2:通过上述两种设置,uglifier 会从缩小的 js 中删除所有版权信息,从而您的应用程序达到 google pagespeed 所需的总缩小程度,并且您将获得+1 point按照你的分数。
但是,您不应避免包含您正在使用的代码的版权。大多数许可证(MIT, BSD, GPL...) 要求您在重新分发该库时保留版权和许可信息。当您允许浏览器从您的服务器或 CDN 下载库的压缩副本时当您重新分发库时。因此你应包括版权和许可信息在你的应用程序的某个地方。
How to
您可以做的一件事是收集您在应用程序上使用的 js 库的所有版权信息,并将它们全部添加到 licenses.txt 中,并将其放在您的公共文件夹中。你的公共/许可证.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]
然后通过使用link tag指定该文件在应用程序的 html 头部的位置(layouts/application.html):
<head>
<!-- License information of used libraries -->
<link rel="license" href="../licenses.txt">
</head>
The rel=许可证表示:当前文档的主要内容受引用文档描述的版权许可的保护。
最后,如果您想对此更加正确,您应该在缩小的 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]
NOTE:我将此评论与!LC在开始时。您需要这个才能通过regexp到丑陋者所以它会允许只有这个评论在缩小的 js 上。为此,请转到 Production.rb 并放置以下内容:
config.assets.js_compressor = Uglifier.new(output: { comments: /^!LC/ })
Uglifier 将只允许在缩小的 js 文件顶部添加 !LC 注释,您不会因为只有一条注释而收到关于页面速度洞察的警告。如果你做到了所有这些,你就完全没问题了您在页面速度洞察方面获得满分,您已经完全缩小了 .js 以实现最佳交付,并且您拥有解决任何法律问题的所有版权。