Как удалить комментарии с помощью BundleTransformer YuiJsMinifier

Я использую BundleTransformer для минимизации css а также js Ресурсы

        <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, чтобы полностью удалить все виды комментариев в связанных минимизированных выходных файлах? Скорость страницы Google настоятельно рекомендовала мне сделать это.

1 ответ

Компрессор YUI не поддерживает удаление важных комментариев.

Я рекомендую вам установить пакет http://www.nuget.org/packages/BundleTransformer.MicrosoftAjax/. После этого зарегистрируйтесь MicrosoftAjaxCssMinifier а также MicrosoftAjaxJsMinifier в качестве минификаторов по умолчанию и добавьте в файл Web.config следующие параметры конфигурации:

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

Это юикомпрессор версии 2.4.8, но проблема все еще существует.

Если вы работаете в Linux, вы можете использовать команду sed для замены/*! с /* в файле перед запуском через юикомпрессор.

Пример из реальной жизни, который я только что протестировал:

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

\/ - экранированный символ /

\* - экранированный символ *

\! - экранированный символ !

g - global (флаг регулярного выражения)

s - заменитель (флаг регулярного выражения)

-i - флаг команды inplace, что означает замену на лету (применение изменений к тому же файлу)

Следующий шаг: просто запустите юикомпрессор как обычно и вуаля!

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