gulp: concat, uglify и inline JavaScript - исходные карты не работают
Я работаю над приложением AngularJS и использую gulp для процесса сборки. У меня есть несколько файлов JavaScript (для контроллеров, служб, директив и т. Д.), Которые я объединяю, уменьшаю и затем вставляю в index.html
чтобы минимизировать количество соединений с сервером.
Здесь возникает проблема:
- Когда я не вставляю объединенные и увеличенные файлы JavaScript в
index.html
исходные карты работают, когда я отлаживаю приложение с помощью инструментов разработчика. - Когда я делаю встроенные файлы JavaScript в
index.html
тогда мои контрольные точки никогда не будут достигнуты. Зачем? Я не уверен, что я делаю не так.
Это соответствующая часть моего gulpfile:
// isPublish is set to true to uglify.
// the temp-folders are here just for testing purposes, I tried with
// and without and I have also changed the order of the gulp-command.
return gulp.src(definition.srcs)
.pipe(sourcemaps.init())
.pipe(replace("$build:serverApiBaseUrl$", args.serverApiBaseUrl || "..."))
.pipe(gulp.dest(targetFolder + "/temp1"))
.pipe(concat(definition.targetFile))
.pipe(gulp.dest(targetFolder + "/temp2"))
.pipe(gulpif(isPublish, uglify()))
.pipe(sourcemaps.write("./"))
.pipe(gulp.dest(targetFolder));
Пожалуйста, смотрите здесь для полного решения, например, для структуры проекта и т. Д. Хотя я думаю, что это не имеет никакого отношения к моей проблеме.
Еще одна вещь, которую я понял, заключается в том, что, хотя точки останова попадают (когда не используется "встроенный"-мод), имена переменных по-прежнему имеют искаженный формат (т.е. только буквы). Это ожидаемое поведение браузера (т.е. инструменты разработчика не поддерживают это?), Или мне нужно указать что-то особенное для sourcemaps
-command? Я не понимаю почему, так как сгенерированные исходные карты содержат names
-Информация.
Обновление I (13.10.2015)
Я понял, что мог бы также использовать следующий метод:
return gulp.src(paths.target + "index.html")
.pipe(inline({
base: paths.target,
js: uglify()
}))
.pipe(gulp.dest(paths.target));
Это, однако, не работает из-за проблемы в gulp-inline
, Кажется, есть запрос на удаление, хотя и не знаю, когда он будет объединен. И даже если это сработает, я не уверен, что произойдет с исходными картами в этом случае..?
Обновление II (19.10.2015)
Версия 0.1.0
из gulp-inline
был выпущен сегодня (см. запрос извлечения, упомянутый в "Обновлении 1", который теперь был объединен обратно). Теперь он работает правильно с gulp-uglify
ошибка была исправлена. Я все еще не мог заставить исходные карты работать хотя. Не уверен, что это поддерживается gulp-inline
,
Так что пока я все еще ищу решение..