繁体   English   中英

如何使用 BundleTransformer YuiJsMinifier 删除评论

[英]How to remove comments with BundleTransformer YuiJsMinifier

我正在使用BundleTransformer来缩小cssjs资源

        <yui>
            <css compressionType="Standard" removeComments="true" lineBreakPosition="-1" />
            <js compressionType="Standard" obfuscateJavascript="true" preserveAllSemicolons="false" disableOptimizations="false" ignoreEval="false" severity="0" lineBreakPosition="-1" encoding="UTF8" threadCulture="en-us" />
        </yui>

正如您在css中看到的那样,可以指定removeComments="true"但在js中没有这样的选项。

我认为 YUI js 压缩器默认会删除注释 是的,它是一种删除,但它仍然是这样的评论:

/* NUGET: BEGIN LICENSE TEXT
 *
 *Bla bla bla
 *
 * NUGET: END LICENSE TEXT */

/*!
 * Bla
 * Licensed under http://www.apache.org/licenses/LICENSE-2.0
 */

看起来没有办法强制 YIU js minifier 删除评论。

https://github.com/yui/yuicompressor

以 /*! 开头的 C 风格注释被保留下来。 这对于包含版权/许可信息的注释很有用

我可以通过使用BundleTransformer来完全删除捆绑的缩小输出文件中的所有类型的注释吗? 谷歌页面速度强烈建议我这样做。

YUI 压缩器不支持删除重要注释。

我建议你安装BundleTransformer.MicrosoftAjax包。 此后将MicrosoftAjaxCssMinifierMicrosoftAjaxJsMinifier注册为默认缩小器,并将以下配置设置添加到 Web.config 文件中:

<configuration>
    …
    <bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
        …
        <microsoftAjax>
            <css commentMode="None" />
            <js preserveImportantComments="false" />
        </microsoftAjax>
        …
    </bundleTransformer>
    …
</configuration>

它是 yuicompressor 版本 2.4.8,但问题仍然存在。

如果你在 linux 上,你可以使用sed命令来替换/*! 在通过 yuicompressor 运行文件之前,在文件中加上/*

我刚刚测试过的真实工作示例:

sed -i -e "s/\/\*\!/\/\*/g" script.js

\\/ - 转义符号/

\\* - 转义符号*

\\! - 逃脱的符号!

g - 全局(正则表达式标志)

s - 替代(正则表达式标志)

-i - "inplace" 命令标志,表示即时替换(在同一文件上应用更改)

下一步:像往常一样运行 yuicompressor,瞧!

java -jar /path/to/yuicompressor-2.4.8.jar script.js -o script.min.js --charset utf-8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM