Переменные отладки не работают с исходными картами gulp + uglify

У меня есть следующая задача gulp для связывания javascript:

gulp.task('js', function () {
    return gulp.src(paths.js)
        .pipe(sourcemaps.init())
        .pipe(uglify())
        .pipe(concat('bundle.min.js'))
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest('dist'));
});

Когда я запускаю это в инструментах разработчика Chrome, исходные карты находятся и работают точки останова, но переменные не могут быть отлажены.

Возьмите этот пример фрагмента углового кода:

iarApp.config(['$animateProvider', function ($animateProvider) {
    $animateProvider.classNameFilter(/angular-animate/);
}]);

Если я добавлю точку останова, чтобы увидеть значение $animateProvider, я получу следующее:

введите описание изображения здесь

Но если я отключу изменение переменных в Uglify:

.pipe(uglify({ mangle: false }))

Тогда это работает:

введите описание изображения здесь

Таким образом, кажется, что плагин gulp-sourcemaps не может отслеживать переменные после того, как Uglify искажает имена.

Может ли кто-нибудь еще столкнуться с такой же проблемой и/или узнать решение?


person Fernando Neira    schedule 25.11.2015    source источник
comment
Переменные переименовываются, когда исходные файлы искажаются. Вы по-прежнему можете получить доступ к переменной, но через ее искаженное имя. Добавление исходной карты помогает только определить, в какой строке возникла проблема в фактическом источнике, но переменные не переводятся.   -  person SeinopSys    schedule 25.11.2015


Ответы (1)


Оказывается, в настоящее время это просто невозможно, так как это не является частью спецификации исходных карт.

Есть некоторые предложения в добавьте эту функцию, поэтому нам придется подождать, пока спецификация и реализации не будут обновлены.

person Fernando Neira    schedule 19.01.2016