Я хочу использовать Gulp для создания моего очень простого проекта Виджета , работающего в браузере. Используя gulp-typescript
, он добавляет modules.export в сгенерированные файлы js, поэтому я нашел несколько примеров browserify
.Как создать внешние исходные карты, поэтому можно использовать отладчик Chrome в Vscode/Typcript для браузера с помощью Gulp
теперь у меня есть следующий gulp.js файл
var gulp = require('gulp');
var del = require('del');
var ts = require("gulp-typescript");
var tsProject = ts.createProject("tsconfig.json");
var sourcemaps = require('gulp-sourcemaps');
var browserify = require("browserify");
var source = require('vinyl-source-stream');
var tsify = require("tsify");
gulp.task('clean', function() {
return del(['build/**/*']);
});
gulp.task("copy-html", function() {
return gulp.src("*.html")
.pipe(gulp.dest("build"));
});
gulp.task("copy-css", function() {
return gulp.src("src/*.css")
.pipe(gulp.dest("build"));
});
gulp.task("default", ["clean", "copy-html", "copy-css"], function() {
return browserify({
basedir: '.',
debug: true,
entries: ['src/main.ts'],
cache: {},
packageCache: {}
})
.plugin(tsify)
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest("build"));
});
Это создает bundle.js, и это, кажется, имеет soucemaps встроенные в него. Отладка в Chrome, похоже, работает нормально, но я пытаюсь использовать плагин отладчика Chrome vscode от here, но контрольные точки отключены.
My launch.json выглядит следующим образом.
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome against localhost, with sourcemaps",
"type": "chrome",
"request": "launch",
"file": "${workspaceRoot}/build/index.html",
"sourceMaps": true
},
{
"name": "Attach to Chrome, with sourcemaps",
"type": "chrome",
"request": "attach",
"port": 9222,
"sourceMaps": true,
"webRoot": "${workspaceRoot}"
}
]
}
Так что я подумал, что мне нужна внешние карты источника, поэтому попытался с помощью gulp-sourcemaps
из here, но просто не могу получить пример для работы с выше сценарием (независимо от того, где я ввожу .pipe(sourcemaps.init())
и .pipe(sourcemaps.write())
я получаю ошибки глотком сборки.
Я пробовал различные предложения, но ни одна работа (возможно, многие из них уже устарели, например, с помощью outDir
в launch.json я получаю ошибку Property ourDir is not allowed.
Итак, я сразу после того, что я люблю d сделать, чтобы использовать этот отладчик с, Typcript, в Chrome, который для меня, как я думал, был бы общим, но не может найти пример, чтобы заставить это работать. Я предполагаю, что это (встроенные) исходные коды, но не уверены.
Любая помощь здесь была бы принята с благодарностью!
Спасибо за ответ, но я попытался выше, и получил только «Этот сайт может» после того, как Chrome запущен. Однако я не использую browserSync. Используя мои параметры, как указано выше, Chrome запускает и открывает страницу с помощью 'file: /// H:/dev/myprojl/build/index.html' в адресной строке. Кажется, что все работает, кроме точек разрыва, где всплывающая подсказка говорит, что «Breakpoint игнорируется, потому что сгенерированный код не найден (проблема с исходной картой?)». Пробовал комбинации вышеуказанных флагов, просто не может заставить его работать вообще. – peterc
Вы устанавливаете точки останова в файле build/bundle.js? Во-вторых, используете ли вы вариант запуска или присоединения?Я предполагаю, что для опции attach для работы chrome уже должен быть открыт - предпочтительно одна вкладка, которую я прочитал, - на ваш сайт с отладочным портом, включенным при запуске этого экземпляра хром. – Mark
Я пытался использовать параметр запуска, но если мне нужно прикрепить, это тоже будет хорошо. Я устанавливаю точки останова в файлах '.ts', то есть там, где я хотел бы отлаживать (как и в отладчике браузера). – peterc