Sourcemaps gulp: gulp-sourcemaps — npm

Gulp: uglify и sourcemaps — программирование

Я использую gulp.

Я хотел бы иметь один или несколько JS файлов (например, jQuery), чтобы объединить их в один, уменьшить его и записать в папку распространения.

Вот как я это делаю:

minifyJS(['/js/myModule.file1.js',
          '/js/myModule.file2.js'], '/dist/js', 'myModule')

функция:

function minifyJS(sourceFiles, destinationFolder, filenameRoot) {
    return gulp.src(sourceFiles)
        .pipe(plumber())

        // .pipe(sourcemaps.init()) here ???
        .pipe(concat(filenameRoot + '.js'))
        .pipe(sourcemaps.init()) // or here ???

        .pipe(gulp.dest(destinationFolder)) // save .js
        .pipe(uglify({ preserveComments: 'license' }))
        .pipe(rename({ extname: '.min.js' }))
        .pipe(gulp.dest(destinationFolder)) // save .min.js
        .pipe(sourcemaps.write('maps'))
        .pipe(gulp.dest(destinationFolder)) // save .map
}

Что я не уверен в местоположении sourcemaps. init()

Должен ли я создавать несколько (2 в моем случае) файлов карт (что было бы неплохо, если они поддерживаются браузерами) или только один (/maps/myModule.map)?

Ответ 1

Итак, как работает sourcemaps в Gulp: каждый элемент, который вы выбираете с помощью gulp.src, переносится в виртуальный файловый объект, состоящий из содержимого в буфере, а также исходного имени файла. Они передаются через ваш поток, где содержимое преобразуется.

Если вы добавляете исходные карты, вы добавляете еще одно свойство к этим виртуальным объектам файла, а именно к sourcemap. С каждым преобразованием sourcemap также преобразуется. Итак, если вы инициализируете исходные карты после concat и до uglify, sourcemaps сохраняет преобразования с этого конкретного шага. Sourcemap «думает» о том, что исходные файлы являются результатом concat, и единственным шагом преобразования, который был сделан, является шаг uglify. Поэтому, когда вы открываете их в своем браузере, ничего не будет соответствовать.

Лучше всего размещать исходные файлы непосредственно после перетаскивания и сохранять их непосредственно перед сохранением результатов. Gulp sourcemaps будет интерполировать между преобразованиями, чтобы вы отслеживали каждое произошедшее изменение. Исходными исходными файлами будут те, которые вы выбрали, и исходная карта будет отслеживать их происхождение.

Это ваш поток:

 return gulp.src(sourceFiles)
    .pipe(sourcemaps.init())
    .pipe(plumber())
    .pipe(concat(filenameRoot + '.js'))
    .pipe(gulp.dest(destinationFolder)) // save .js
    .pipe(uglify({ preserveComments: 'license' }))
    .pipe(rename({ extname: '.min.js' }))
    .pipe(sourcemaps.write('maps'))
    .pipe(gulp.dest(destinationFolder)) // save .min.js

sourcemaps.write на самом деле не пишет исходные карты, он просто сообщает Gulp, чтобы материализовать их в физический файл, когда вы вызываете gulp.dest.

Тот же самый плагин sourcemap будет включен в Gulp 4 изначально: http://fettblog.eu/gulp-4-sourcemaps/ — Если вы хотите получить более подробную информацию о как sourcemaps работают внутри с Gulp, они находятся в главе 6 моей книги Gulp: http://www.manning.com/baumgartner

Ubuntu – Подробная информация о пакете node-gulp-sourcemaps в bionic

Ссылки для node-gulp-sourcemaps

Ресурсы Ubuntu:

Исходный код node-gulp-sourcemaps:

Сопровождающий:

Please consider filing a bug or asking a question via Launchpad before contacting the maintainer directly.

Original Maintainers (usually from Debian):

It should generally not be necessary for users to contact the original maintainer.

Внешние ресурсы:

Подобные пакеты:

Source map support for Gulp.js

Другие пакеты, относящиеся к node-gulp-sourcemaps

  • dep:
    node-acorn
    (>= 4.0)
    ECMAScript parser for Node.js
  • dep:
    node-convert-source-map
    (>= 1.0)
    Converts a source-map from/to between formats
  • dep:
    node-css
    (>= 2.0)
    JavaScript CSS parser and stringifier — Node.js module
  • dep:
    node-debug-fabulous
    (>= 0.0.0)
    visionmedia debug extensions rolled into one
  • dep:
    node-detect-newline
    (>= 2.0)
    Detect the dominant newline character of a string
  • dep:
    node-graceful-fs
    (>= 4.0)
    drop-in replacement improving the Node.js fs module
  • dep:
    node-source-map
    (>= 0.0)
    Mozilla source map generator and consumer — Node.js module
  • dep:
    node-strip-bom
    (>= 2.0)
    Strip UTF-8 byte order mark (BOM) from a string
  • dep:
    node-through3
    (>= 2.0)
    Make a stream.Transform out of a function — Node.js module
  • dep:
    node-vinyl
    (>= 1.0)
    Virtual file format
  • dep:
    nodejs

    evented I/O for V8 javascript

Загрузка node-gulp-sourcemaps

Загрузить для всех доступных архитектур
Архитектура Размер пакета В установленном виде Файлы
all 9,5 Кб 36,0 Кб

[список файлов]

Установка node-gulp-sourcemaps в Ubuntu / Linux Mint / Debian

Установка:

Для установки node-gulp-sourcemaps в Ubuntu / Linux Mint / Debian, введите в Терминал:

sudo apt update

sudo apt install node-gulp-sourcemaps

Подробная информация о пакете:

Поддержка исходной карты для Gulp.js

http://github.com/floridoo/gulp-sourcemaps



Источник: https://packages.ubuntu.com

Навигация по записям

  • Зависимости:

  • node-acorn

    Анализатор ECMAScript для Node.js

  • node-convert-source-map

    Преобразует исходную карту из / в формат

  • node-css

    JavaScript-анализатор CSS и стригатор — модуль Node.js

  • node-debug-fabulous

    Расширения отладки visionmedia, свернутые в один

  • node-detect-newline

    Определить доминирующий символ новой строки строки

  • node-graceful-fs

    Замена замены, улучшая модуль Node.js fs

  • node-source-map

    Генератор и источник исходной карты Mozilla — модуль Node.js

  • node-strip-bom

    Разметка байта байта UTF-8 (BOM) из строки

  • node-through3

    Сделать поток. Преобразовать из функции — модуль Node.js

  • node-vinyl

    Формат виртуального файла

  • nodejs

    Событие I/O для V8 javascript

gulp-sourcemaps · GitHub

gulp-sourcemaps · GitHub

Закреплено

  1. Поддержка карты исходного кода для gulpjs.

    JavaScript

    1,1 км

    122

  2. Помощник для реализации поддержки исходной карты в плагинах Gulp

    JavaScript

    19

    9

  3. Плагин Gulp для загрузки или удаления sourcesContent из карты источников.

    JavaScript

    2

  4. Плагин Gulp для отображения источников исходной карты.

    JavaScript

    4

  5. Плагин Gulp для создания карты источника идентификации для файла.

    JavaScript

    3

    4

  6. Плагин Gulp для изменения свойства файла исходной карты.

    JavaScript

    2

    1

Репозитории

  • карта идентичности

    Плагин Gulp для создания карты источника идентификации для файла.

    JavaScript

    3

    Массачусетский технологический институт

    4

    3

    1

    Обновлено 5 июня 2021 г.

  • источники-контент

    Плагин Gulp для загрузки или удаления sourcesContent из карты источников.

    JavaScript

    2

    Массачусетский технологический институт

    0

    0

    0

    Обновлено 19 февраля 2019 г.

  • JavaScript

    0

    Массачусетский технологический институт

    0

    1

    0

    Обновлено 13 октября 2018 г.

  • JavaScript

    19

    9

    4

    0

    Обновлено 9 февраля 2018 г.

  • комментарий

    Плагин Gulp для работы с комментарием sourceMappingURL файла.

    0

    Массачусетский технологический институт

    0

    3

    1

    Обновлено 1 апреля 2017 г.

  • 0

    Массачусетский технологический институт

    0

    1

    0

    Обновлено 30 марта 2017 г.

  • файл карты

    Плагин Gulp для изменения свойства файла исходной карты.

    JavaScript

    2

    Массачусетский технологический институт

    1

    1

    0

    Обновлено 24 марта 2017 г.

  • карты-источники

    Плагин Gulp для отображения источников исходной карты.

    JavaScript

    4

    Массачусетский технологический институт

    0

    1

    0

    Обновлено 23 марта 2017 г.

Наиболее часто используемые темы

Загрузка…

Вы не можете выполнить это действие в настоящее время.Вы вошли в систему с другой вкладкой или окном. Перезагрузите, чтобы обновить сеанс.
Вы вышли из системы на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс.

javascript — gulp: uglify и исходные карты

Итак, вот как исходные карты работают в Gulp: каждый элемент, который вы выбираете через gulp.src , передается в виртуальный файловый объект, состоящий из содержимого в буфере, а также исходного имени файла. Они передаются по конвейеру через ваш поток, где содержимое преобразуется.

Если вы добавляете карты источников, вы добавляете к этим виртуальным файловым объектам еще одно свойство, а именно карту источников. С каждым преобразованием также преобразуется исходная карта. Итак, если вы инициализируете исходные карты после concat и до uglify, исходные карты сохраняют преобразования с этого конкретного шага. Исходная карта «думает», что исходные файлы являются выходными данными concat, и единственный шаг преобразования, который имел место, — это шаг uglify. Поэтому, когда вы откроете их в своем браузере, ничего не будет совпадать.

Лучше размещать исходные карты сразу после добавления глобуса и сохранять их непосредственно перед сохранением результатов. Исходные карты Gulp будут интерполировать между преобразованиями, так что вы будете отслеживать каждое изменение, которое произошло . Исходными исходными файлами будут те, которые вы выбрали, и исходная карта будет отслеживать их до этих источников.

Это ваш стрим:

  вернуть gulp.src (исходные файлы)
    .pipe (sourcemaps.init ())
    .pipe (сантехник ())
    .труба (concat (filenameRoot + '.js'))
    .pipe (gulp.dest (destinationFolder)) // сохранить .js
    .pipe (uglify ({preserveComments: 'лицензия'}))
    .pipe (переименовать ({extname: '.min.js'}))
    .pipe (sourcemaps.write ('карты'))
    .pipe (gulp.dest (destinationFolder)) // сохранить .min.js
  

sourcemaps.write на самом деле не записывает исходные карты, он просто сообщает Gulp материализовать их в физический файл, когда вы вызываете gulp.dest .

Тот же самый плагин исходной карты будет изначально включен в Gulp 4: http: // fettblog.eu / gulp-4-sourcemaps / — Если вы хотите получить более подробную информацию о том, как исходные карты работают внутри Gulp, они находятся в главе 6 моей книги Gulp: http://www.manning.com/baumgartner

Gulp 4: встроенные карты источников

Одна действительно крутая функция в дорожной карте Gulp 4 — это включение встроенного
исходные карты. Коммит примерно две недели назад на виниловой пластинке.
пакет делает это возможным сейчас. Вместо использования gulp-sourcemaps
package напрямую, вы можете использовать флаг в gulp.src . Об остальном позаботится Gulp:

  var gulp = require ('gulp'); 
var less = require ('gulp-less');
var minify = require ('gulp-minify-css');
var prefix = require ('gulp-autoprefixer');

gulp.task ('стили', функция () {
return gulp.src ('main.less', {sourcemaps: true})
.pipe (less ())
.pipe (minify ())
.pipe (префикс ())
.pipe (gulp.dest ('dist / styles'));
});

gulp.dest позаботится о сохранении этих исходных карт.Так что с каждым глотком. Самый лучший
, вы получите новые исходные карты для вашего вывода.

Под капотом Gulp по-прежнему использует пакет gulp-sourcemaps . Это просто
гораздо более приятный и прямой способ их решения. Тем не менее, в ваших плагинах есть
чтобы «понять» Sourcemaps.

Бета-установка #

На данный момент это все еще в стадии бета-тестирования. Чтобы проверить это, у вас должен быть установлен Gulp 4:

  npm install --save-dev git: //github.com/gulpjs/gulp#4.0
  

Войдите в каталог node_modules / gulp / и установите текущий vinyl-fs
упаковка.

  установка npm --save-dev git: //github.com/wearefractal/vinyl-fs
  

Вам больше не придется этого делать, когда Gulp 4 станет общедоступным в NPM.

gulp-sourcemaps #

В некоторых случаях может понадобиться старый плагин.
Например, вы хотите назвать свои исходные каталоги, чтобы упростить их
можно найти в ваших инструментах разработки.Для этого вам все равно придется использовать оригинальный плагин:

  gulp.task ('стили', функция () {
return gulp.src ('main.less')
.pipe (sourcemaps.init ())
.pipe (less ())
.pipe (minify ( ))
.pipe (префикс ())
.pipe (sourcemaps.write ('.', {SourceRoot: 'css-source'}))
.pipe (gulp.dest ('dist'));
}) ;

Это также необходимо, если вы хотите объединить его с другими исходными картами, например
сгенерировано Browserify:

  var browserify = require ('browserify'); 
var gulp = require ('глоток');
var source = require ('исходный-поток-винила');
var buffer = require ('виниловый буфер');
var uglify = require ('gulp-uglify');
var sourcemaps = require ('gulp-sourcemaps');
var gutil = require ('gulp-util');

глоток.task ('javascript', function () {
var b = browserify ({
entries: './entry.js',
debug: true
});

return b.bundle ()
.pipe (source ( 'app.js'))
.pipe (buffer ())
.pipe (sourcemaps.init ({loadMaps: true}))
.pipe (uglify ())
.on ('error', gutil.log)
.pipe (sourcemaps.write ('./'))
.pipe (gulp.dest ('./ dist / js /'));
});

Но поскольку он имеет ту же кодовую базу, вы должны нормально их использовать. Это тоже
одна из тех вещей, на которых был построен Gulp 4: вещи, которые доказали
быть полезным, если раньше не было обязательным, теперь попадают в ядро, но все же
такой же извлекаемый и многоразовый, как и любая часть Gulp.

src () | gulp.js

буфер логическое значение
функция
истина При значении истина содержимое файла буферизируется в память. Если false, свойство содержимого объекта Vinyl будет приостановленным потоком. Буферизация содержимого больших файлов может оказаться невозможной.
Примечание. Плагины могут не реализовывать поддержку потокового содержимого.
read boolean
function
true Если false, файлы не будут прочитаны, а их объекты Vinyl не будут доступны для записи на диск через .dest () .
с дата
отметка времени
функция
Если установлено, создает объекты Vinyl только для файлов, измененных с указанного времени.
removeBOM boolean
function
true При значении true удаляет спецификацию из файлов в кодировке UTF-8. Если false, игнорирует спецификацию.
sourcemaps boolean
function
false Если true, включает поддержку исходных карт для созданных объектов Vinyl.Загружает встроенные карты источников и разрешает ссылки на внешние карты источников.
resolveSymlinks boolean
function
true Когда истинно, рекурсивно разрешает символические ссылки на их цели. Если false, сохраняет символические ссылки и устанавливает свойство символической ссылки объекта Vinyl равным пути к исходному файлу.
cwd строка process.cwd () Каталог, который будет объединен с любым относительным путем для формирования абсолютного пути.Игнорируется для абсолютных путей. Используйте, чтобы избежать объединения глобусов с path.join () .
Эта опция передается напрямую в глобальный поток.
base string Явно задает свойство base для созданных объектов Vinyl. Подробно в Концепции API.
Эта опция передается напрямую в глобальный поток.
cwdbase boolean false Если true, параметры cwd и base должны быть выровнены.
Эта опция передается напрямую в глобальный поток.
корень строка Корневой путь, по которому разрешается глобус .
Эта опция передается напрямую в глобальный поток.
allowEmpty boolean false Когда false, globs , который может соответствовать только одному файлу (например, foo / bar.js ), вызывает ошибку, если они не находят соответствие.Если true, подавляет сбои глобуса.
Эта опция передается напрямую в глобальный поток.
uniqueBy строка
функция
'путь' Удалите дубликаты из потока, сравнив имя свойства строки или результат функции.
Примечание: При использовании функции функция получает потоковые данные (объекты, содержащие свойства cwd , base , path ).
dot boolean false Если true, сравнить глобусы с точечными файлами, например .gitignore .
Эта опция передается напрямую в node-glob.
silent boolean true Когда true, подавляет предупреждения от печати на stderr .
Примечание: Эта опция передается напрямую в node-glob, но по умолчанию имеет значение true вместо false .
mark boolean false Если true, к совпадениям каталогов будет добавлен символ /. Обычно не требуется, поскольку пути в конвейере нормализованы.
Эта опция передается напрямую в node-glob.
nosort boolean false Если true, отключает сортировку результатов glob.
Эта опция передается напрямую в node-glob.
stat boolean false Если true, фс.stat () вызывается для всех результатов. Это добавляет дополнительные накладные расходы и, как правило, не должно использоваться.
Эта опция передается напрямую в node-glob.
strict boolean false Если true, при обнаружении непредвиденной проблемы при чтении каталога будет выдана ошибка.
Эта опция передается напрямую в node-glob.
nounique boolean false Если false, предотвращает дублирование файлов в наборе результатов.
Эта опция передается напрямую в node-glob.
debug boolean false Если true, отладочная информация будет записана в командную строку.
Эта опция передается напрямую в node-glob.
nobrace boolean false Если true, позволяет избежать расширения наборов скобок - например, {a, b} или {1..3} .
Эта опция передается напрямую в node-glob.
noglobstar boolean false Если истинно, символ шара с двумя звездами обрабатывается как символ шара с одной звездой.
Эта опция передается напрямую в node-glob.
noext boolean false Если true, исключает сопоставление шаблонов extglob - например, + (ab) .
Эта опция передается напрямую в node-glob.
nocase boolean false Если true, выполняется сопоставление без учета регистра.
Примечание: В файловых системах без учета регистра немагические шаблоны будут совпадать по умолчанию.
Эта опция передается напрямую в node-glob.
matchBase boolean false Если true и globs не содержат символов /, просматривает все каталоги и сопоставляет этот glob - например, * .js будет рассматриваться как эквивалент ** / *. Js .
Эта опция передается напрямую в node-glob.
nodir boolean false Если true, сопоставляет только файлы, а не каталоги.
Примечание: Чтобы сопоставить только каталоги, завершите глобус цифрами /.
Эта опция передается напрямую в node-glob.
игнорировать строка
массив
Globs для исключения из совпадений. Эта опция комбинируется с инвертированными шарами .
Примечание: Эти глобусы всегда сопоставляются с файлами точек, независимо от любых других настроек.
Эта опция передается напрямую в node-glob.
follow boolean false Если true, каталоги с символическими ссылками будут перемещаться при расширении глобусов ** .
Примечание: Это может вызвать проблемы с циклическими ссылками.
Эта опция передается напрямую в node-glob.
realpath boolean false Если true, для всех результатов вызывается fs.realpath () .Это может привести к зависанию ссылок.
Эта опция передается напрямую в node-glob.
cache object Ранее созданный объект кеша - позволяет избежать некоторых вызовов файловой системы.
Эта опция передается напрямую в node-glob.
statCache объект Ранее созданный кеш результатов fs.Stat - позволяет избежать некоторых вызовов файловой системы.
Эта опция передается напрямую в node-glob.
символические ссылки объект Ранее созданный кэш символических ссылок - позволяет избежать некоторых вызовов файловой системы.
Эта опция передается напрямую в node-glob.
nocomment boolean false Если false, рассматривать символ # в начале глобуса как комментарий.
Эта опция передается напрямую в node-glob.

Browserify в Gulp с правильными картами источников

Чтобы использовать browserify в gulp, нужно использовать не плагин, а один из рецептов gulp (по крайней мере, на данный момент).К сожалению, интегрировать browserify в gulp не так-то просто, особенно когда дело касается исходных карт.

Макет каталога тестового проекта

При использовании рецепта с исходными картами из документации gulp в небольшом тестовом проекте исходные файлы получают очень странные пути, назначенные в картах. Папки вложены несколько раз, что затрудняет поиск файла. С другой стороны, с рецептом, представленным здесь, файлы представлены с их правильными путями на исходных картах.

До: После:

Конфигурация gulp выглядит так:

testproject / gulpfile.js скачать

  const gulp = require ('gulp');
const sourcemaps = require ('gulp-sourcemaps');
const transform = require ('vinyl-transform');
const browserify = require ('browserify');
const uglify = require ('gulp-uglify');
const path = require ('путь');

function logic () {
return gulp.src ('logic / *. js', {читать: false})
.pipe (преобразовать (путь к файлу =>
browserify (путь к файлу, {
отладка: правда
})
.plugin ('browserify-sourcemap-root-transform', {basedir: path.resolve ('.')})
.пучок()
.on ('ошибка', функция (ошибка) {
console.error (error.stack? error.stack: error);
this.emit ('конец');
})
))
.pipe (sourcemaps.init ({loadMaps: true}))
.pipe (uglify ())
.pipe (sourcemaps.write ('.', {sourceRoot: '/'}))
.pipe (gulp.dest ('./ dist'));
}

gulp.task (логика);
  

Пример написан для Gulp 4. Он также передает код в uglify, чтобы продемонстрировать, что у нас есть нормальный виниловый поток после просмотра и исходные карты работают должным образом. Вы можете установить все используемые пакеты, запустив

  npm i --save-dev gulpjs / gulp # 4.0 gulp-sourcemaps, виниловое преобразование
  

Замечания

В рецепте для выбора точек входа используется обычный поток виниловых файлов gulp.src . Думаю, такой подход проще, чем рецепт с шариками. Однако имейте в виду, что browserify будет читать точки входа и все файлы, на которые есть ссылки, с диска. Таким образом, файлы должны существовать, а плагины, примененные к потоку до просмотра , не будут иметь никакого эффекта .

Gulp и Browserify - Добавление карт Babel и Source

[00:00] У нас есть действительно хороший рабочий процесс, созданный с помощью Gulp, Browserify и BrowserSync.Затем мы хотим добавить возможность писать в следующей версии JavaScript, что бы это ни было.

[00:13] Например, если мы хотим использовать параметры функции по умолчанию вместе с некоторой строковой интерполяцией. Запустите наш сервер, чтобы увидеть это в действии.

[00:37] Если мы откроем консоль, мы увидим, что здесь произошла ошибка. Один ожидаемый жетон. Это связано с тем, что на момент записи параметры функций по умолчанию еще не поддерживаются в Chrome.

[00:55] Чтобы исправить это, мы можем использовать популярный проект Babel.Закройте это, npm install babelify. Вернувшись в наш файл Gulp, мы внесем это.

[01:17] Babelify - это оболочка для проекта Babel, которая позволяет использовать его в качестве преобразователя для Browserify. Перед тем, как вызвать bundle, мы просто вызываем преобразование и передаем его через Babelify.

[01:35] Это будет действовать для каждого файла, который проходит через наш пакет.

[01:43] Мы можем проверить, что работает, снова запустив наш сервер. Перезагрузите браузер, и вы увидите, что параметры функции по умолчанию теперь скомпилированы правильно.Чтобы доказать, что это работает, вы можете изменить это, нажать «Сохранить», и готово.

[02:05] Теперь у нас есть компиляция ES6, а также сервер разработки с активной перезагрузкой, который должен обеспечить действительно эффективный рабочий процесс.

[02:16] Однако в этой головоломке есть еще одна деталь. Если я помещу здесь оператор отладки, вы увидите, что у отладчика есть ОЗУ, но он сообщает, что мы находимся в строке 14 bundle.js. Что правильно, согласно Chrome, потому что он загружает этот файл. Здесь вы можете увидеть строку 14.

[02:46] Но при отладке нашего кода мы хотим, чтобы он отображал строку 2 welcome.js. Для этого нам нужны исходные карты. Мы закроем сервер, вернемся к нашему файлу Gulp и установим Exorcist. Переносим его в наш файл Gulp.

[03:15] Exorcist, как следует из названия, может извлекать исходную карту из потока Browserify. То, как вы это подключаете, состоит в том, что, как вы уже сказали, мы преобразовали поток Browserify в поток источника винила.

[03:32] Мы просто передаем его по конвейеру и передаем туда, куда мы хотим, чтобы вызывалась наша исходная карта.Мы будем тянуть его вместе с файлом пакета. Мы скажем app.js.map.

[03:51] Нам нужно сделать еще одну вещь, чтобы включить это. Browserify должен знать, что мы находимся в режиме отладки, чтобы генерировать исходные карты. Мы уберем это отсюда и сначала добавим к нему debug = true. Этого должно быть достаточно.

[04:12] Давайте снова запустим нашу задачу. На этот раз, когда запускается отладчик, мы находимся в строке 2 приветствия.js, где мы разместили инструкцию отладчика.

Галерея NuGet | Повторно набрал.глоток-исходные карты 0.1.6733

 Установочный пакет Retyped.gulp-sourcemaps -Version 0.1.6733 
 dotnet add package Retyped.gulp-sourcemaps --version 0.1.6733