Сохраняйте комментарии к лицензии при использовании UglifyJS2 с плагином gulp

В этом проекте я использую gulp-uglify версии 3.0.1 и хочу сохранить комментарии, содержащие тексты лицензий в выводе.

На странице проектов указано, что

Most of the minify options from the UglifyJS API are supported.

и этот ответ показывает, как передать параметры минимизации в плагин.

В Readme UglifyJS указано, что для сохранения текстов лицензий

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, если это возможно. Кроме того, он также не хранит такие заголовки лицензий.


person x29a    schedule 19.12.2018    source источник
comment
В документация UglifyJS2 четко указывает параметр comments в параметрах вывода с таким же поведением. Так что должно работать так, как вы описываете. Сообщите об этом как об ошибке.   -  person Boaz - CorporateShillExchange    schedule 19.12.2018


Ответы (1)


У меня такая же проблема. Я заметил документацию комментариев UglifyJS

Вы можете передать --comments all, чтобы сохранить все комментарии, или допустимое регулярное выражение JavaScript, чтобы оставить только комментарии, соответствующие этому регулярному выражению. Например, --comments /^!/ сохранит такие комментарии, как /*! Copyright Notice */.

Итак, я попробовал comments: /^!/:

.pipe(uglify({
    mangle: true,
    output: {
        beautify: true,
        comments: /^!/
    }
}))

Теперь я вижу комментарии об авторских правах в полученном коде с uglified.

person Jeromy French    schedule 16.12.2020