javascript缩小删除许可证?

时间:2013-07-04 11:52:33

标签: javascript minify

Javascript缩小通常会从源中删除所有注释。这意味着还会删除许可证信息。

如果我经营一个大型网站,并且我想遵守许可证,这是否意味着我无法使用自动缩小功能?没有选项可以“保留第一条评论,但不保留其他评论 “对吗?

我问,因为一个相当大的公司使用了我编写的一些代码而不包括我的(麻省理工学院)许可证,但在我感到很恼火之前,我想把自己放在自己的位置。

修改
似乎作为作者,我有责任以这样的方式评论许可(见答案),它在缩小期间不会被删除。我可以先做这件事,然后如果我的许可仍然被删除则引发恶臭

7 个答案:

答案 0 :(得分:9)

这是“依赖”的经典案例。

这取决于缩小器。例如,UglifyJS将保留在文件的初始注释块中,除非您明确告诉它不要使用-nc标志。其他人(如Google的Closure Compiler)会寻找特殊的注释(例如@license@preserve)。有些人尊重“大声”评论(例如,/*! ... */),而其他人则没有。

这取决于你如何缩小。一些组织正在积极地缩小和连接所有内容以挤出每个字节。其他人则在源控制中添加许可证,并在缩小期间“将其留在”中。其他人在所有内容连接在一起后应用许可文件

某些地方可以很容易地将许可证放在他们的生产版本中,特别是如果他们积极地将他们使用的每个库连接到一个JS文件中。他们甚至可能都不知道他们正在这样做。这里你最好的选择可能只是伸出援手,要求他们确保他们尊重许可条款并将许可文本留在那里 - 他们甚至可能没有意识到他们正在这样做。

答案 1 :(得分:7)

没有!如果您在YUIcompressor中使用以下评论样式:

/*!
 *
 */

感叹号告诉压缩器保留评论。

Here is Documented Notes for these comments

答案 2 :(得分:6)

Google Closure编译器支持@preserve and @license annotations,告诉它保留评论:

/**
 * @preserve Copyright 2009 SomeThirdParty.
 * Here is the full license text and copyright
 * notice for this file. Note that the notice can span several
 * lines and is only terminated by the closing star and slash:
 */

UglifyJS支持接受正则表达式的命令行选项--comments。任何与正则表达式匹配的注释都将保留在输出中。

其他答案显示其他缩小器也支持此功能。您必须阅读所选缩小器的文档,以确定在您自己的情况下使用的确切语法/技术。

答案 3 :(得分:1)

您可以使用节点的 r.js

这里描述了how to use it

Sample output

wro4j也会保留许可证评论。

答案 4 :(得分:1)

可以保留许可证信息。例如,YUI压缩器可以这样做:

  

以/ *开头的C风格评论!保存完好。这对包含版权/许可证信息的评论非常有用。

Documentation

答案 5 :(得分:0)

这取决于你的缩小工具

/** Notice 
  *
  *
**/

/*!
 *
 *
 */

查看您的工具文档

答案 6 :(得分:0)

几年后但是......

除了消除死代码的minifiers之外,你可以编写对许可证的引用,而不是带有命名空间前缀的注释。

对于像JS这样的东西;

var NS_LICENSE_URL = "Cool Inc. - Apache 2.0 - http://github.com/nfisher/cooljs/LICENSE.txt";

对于类似CSS的东西;

.ns_license_url {
  content: "Cool Inc. - Apache 2.0 - http://github.com/nfisher/cooljs/LICENSE.txt";
}

或者您可以复制整个许可证。还可以为JS添加一个console.out,将其打印到控制台,但这可能会超出。