我跑过类似的问题,但我们使用browserify而不是webpack。本周,我有机会在BUILD的VS2017开发团队与开发人员交谈,他表示,一个简单的检查就是确保Edge可以在Debugger视图中看到原始文件。如果是这样,源地图正在正确生产。
就我而言,我有几个问题。下面是我使用的工具集:
browserify
gulp-sourcemaps
uglify
我gulp
任务看起来如下:
gulp.task('build:debug:js', function() {
return browserify('./wwwroot/js/site.js', { debug: true })
.transform("babelify", { presets: ["es2015"] })
.transform(stringify, {
appliesTo: { includeExtensions: ['.html'] }
})
.bundle()
.pipe(source('site.min.js'))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(uglify())
.pipe(sourcemaps.write('.', {
sourceMappingURL: function(file) {
return file.relative + '.map';
}
}))
.pipe(gulp.dest('./wwwroot/js'))
.pipe(connect.reload());
});
我碰巧使用非常旧版本的gulp-sourcemaps
(1.7 0.1)。最终做的是在缩小的JavaScript文件末尾生成源映射评论,而不是换行。此外,文字null
出现在.map
之后,这使浏览器无法看到源图文件。一旦我升级到最新的gulp-sourcemaps
(2.6.0),它确保源代码评论位于文件的最后一行,最后没有null
。
的第二个问题是越来越Visual Studio中知道来源的正确定位。如下为我的项目看路径:
- app文件夹
- wwwroot的
- JS
- site.min。JS
- site.min.js.map
- release_dashboard.js
当托管,JavaScript的是要/js/site.min.js
访问,不/wwwroot/js/site.min.js
。然而,在这个时候,sourcemaps看上去像下面这样:
{
"version":3,
"sources":[
"node_modules/browser-pack/_prelude.js",
"wwwroot/js/release-dashboard.html",
"wwwroot/js/release-dashboard.js",
"wwwroot/js/site.js"
],
"names":[],
"mappings":"SNIP",
"file":"site.min.js"
}
因此,我不得不使用下面的一口任务得到它删除wwwroot
和点sourceroot一个目录:
gulp.task('build:debug:js', function() {
return browserify('./wwwroot/js/site.js', { debug: true })
.transform("babelify", { presets: ["es2015"] })
.transform(stringify, {
appliesTo: { includeExtensions: ['.html'] }
})
.bundle()
.pipe(source('site.min.js'))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(sourcemaps.mapSources(function (sourcePath, file) {
return sourcePath.replace('wwwroot/', '');
}))
.pipe(sourcemaps.write('.', { includeContent: false, sourceRoot: '../' }))
.pipe(gulp.dest('./wwwroot/js'))
.pipe(connect.reload());
});
这产生了sourcemap看起来像以下:
{
"version":3,
"sources":[
"node_modules/browser-pack/_prelude.js",
"wwwroot/js/release-dashboard.html",
"wwwroot/js/release-dashboard.js",
"wwwroot/js/site.js"
],
"names":[],
"mappings":"SNIP",
"file":"site.min.js",
"sourceRoot":"../"
}
有了这个,Chrome浏览器把它捡起来没有问题,所以没有Visual Studio的!
我想补充一点,它似乎采取源列表中的第一个文件,并始终映射到此文件。 (在我的情况下,它是引导文件) – Sandman
您使用了哪个项目模板? –
我已经使用visual studio 2017 - 新网站,ASP.NET空网站。 – Sandman