删除许可证的javascript缩小?

删除许可证的javascript缩小?,javascript,minify,Javascript,Minify,Javascript缩小通常会从源代码中删除所有注释。这意味着许可证信息也将被删除 如果我运行一个大型站点,并且我想遵守许可证,这是否意味着我不能使用自动缩小?没有“保留第一条评论,但不保留其他评论”的选项 ”“是吗 我这样问是因为一家相当大的公司使用了我写的一些代码,但没有包括我的(麻省理工)许可证,但在我生气之前,我想设身处地为他们着想 编辑: 作为作者,我的责任似乎在于以这样一种方式评论许可证(参见答案),即在缩小过程中它不会被删除。我可以先这么做,然后如果我的许可证仍然被删除,我会大发雷

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

如果我运行一个大型站点,并且我想遵守许可证,这是否意味着我不能使用自动缩小?没有“保留第一条评论,但不保留其他评论”的选项 ”“是吗

我这样问是因为一家相当大的公司使用了我写的一些代码,但没有包括我的(麻省理工)许可证,但在我生气之前,我想设身处地为他们着想

编辑

作为作者,我的责任似乎在于以这样一种方式评论许可证(参见答案),即在缩小过程中它不会被删除。我可以先这么做,然后如果我的许可证仍然被删除,我会大发雷霆!如果在YUIcompressor中使用以下注释样式:

/*!
 *
 */
感叹号告诉压缩器保留注释


谷歌闭包编译器支持告诉它保留注释:

/**
 * @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:
 */
支持接受正则表达式的命令行选项
--comments
。任何与正则表达式匹配的注释都将保留在输出中


其他答案表明,其他迷你手机也支持此功能。您必须阅读所选缩微器的文档,以确定在您自己的案例中使用的确切语法/技术。

您可以使用node的r.js

这里对其进行了描述


也可以保留许可证注释。

可以保留许可证信息。例如,YUI压缩机可以做到:

以/*开头的C风格注释!它们被保存了下来。这对于包含版权/许可证信息的注释非常有用


()

这取决于您的缩小工具

/** Notice 
  *
  *
**/

查看您的工具文档

这是“视情况而定”的经典案例

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

这取决于缩小的方式。一些组织正在积极缩小并连接所有内容,以挤出每个字节。其他人则在源代码管理中添加许可证,并在缩小时“保留它们”。其他人则在将所有内容连接在一起后应用许可证文件


对于某些地方来说,在他们的生产版本中删除许可证是很容易的,特别是如果他们积极地将他们使用的每个库连接到一个JS文件中。他们甚至可能不知道自己在做这件事。在这里,你最好的办法可能是联系他们,让他们确保他们遵守许可条款,并将许可文本留在那里——他们甚至可能没有意识到他们正在这样做。

这取决于使用的缩小工具/API。尽管如果工具支持,重要注释可以保留在缩微器输出中。以下是重要评论的格式

/*!
 * Your comment...1
 * ......
 * Your comment...n
 */
以下简单的在线工具可用于缩小javascript代码,我发现它保留了重要的注释:


几年后,但是

除了消除死代码的小型化程序外,您可以将对许可证的引用编码为非带名称空间前缀的注释

对于JS之类的

var NS_LICENSE_URL = "Cool Inc. - Apache 2.0 - http://github.com/nfisher/cooljs/LICENSE.txt";
.ns_license_url {
  content: "Cool Inc. - Apache 2.0 - http://github.com/nfisher/cooljs/LICENSE.txt";
}
对于CSS之类的东西

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

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

但作为开发人员,您无法控制或了解使用您的代码的人所使用的工具。格式化示例会有所帮助。我在注释的末尾有
@license
部分,在缩小的文件中留下了一条空注释。看来Closure将保留
@license
注释之后的任何内容。