Сохраняйте лицензионные комментарии при использовании UglifyJS2 с плагином gulp
В этом проекте я использую gulp-uglify версии 3.0.1, и я хочу сохранить комментарии, содержащие тексты лицензий в выводе.
На странице проектов указано, что
Most of the minify options from the UglifyJS API are supported.
и этот ответ показывает, как передать параметры минимизации в плагин.
В UglifyJS Readme указано, что для сохранения текстов лицензий
You can pass --comments to retain certain comments in the output. By default it will keep JSDoc-style comments that contain "@preserve", "@license" or "@cc_on" (conditional compilation for IE)
Итак, я попробовал:
.pipe(uglify({
mangle: true,
output: {
beautify: true,
comments: "all"
}
}))
Но так как даже указав "all"
не приводит к комментариям атрибуции лицензии, я предполагаю, что опция минимизировать comments
ведет себя иначе, чем аргумент командной строки --comments
,
Я также попробовал preserveComments
найдено здесь, но это просто генерирует:
[13:37:42] GulpUglifyError: unable to minify JavaScript
Caused by: DefaultsError: `preserveComments` is not a supported option
Есть ли способ достичь того, что аргумент командной строки предлагает через gulp-uglify
плагин? Если это невозможно, могу ли я использовать плагин webpack?
Есть этот обходной путь, указав регулярное выражение, но я хочу использовать функциональность непосредственно из UglifyJS, если это возможно. Кроме того, он также не сохраняет заголовки лицензий.
1 ответ
У меня такая же проблема. Я заметил , что предложенная документация комментариев UglifyJS
Вы можете пройти
--comments all
чтобы сохранить все комментарии, или допустимое регулярное выражение JavaScript, чтобы оставить только комментарии, соответствующие этому регулярному выражению. Например--comments /^!/
останутся комментарии, как/*! Copyright Notice */
.
Так что я попробовал"
comments: /^!/
":
.pipe(uglify({
mangle: true,
output: {
beautify: true,
comments: /^!/
}
}))
Теперь я вижу комментарии об авторских правах в полученном коде с uglified.