Как удалить комментарии с помощью 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