在前端开发中,当使用SourceMap来调试压缩后的代码时,有时候我们希望忽略SourceMap头部的注释,以减小文件大小。下面给出几种解决方法:
const gulp = require('gulp');
const uglify = require('gulp-uglify');
gulp.task('compress', function() {
return gulp.src('src/*.js')
.pipe(uglify({ output: { comments: /^!/ } })) // 忽略以"!"开头的注释
.pipe(gulp.dest('dist'));
});
使用在线工具处理:如果只是想临时忽略SourceMap头部注释,可以使用在线工具来处理压缩后的代码。例如,可以使用Online JavaScript Beautifier(https://beautifier.io/)将代码粘贴进去,勾选"Preserve comments"选项,然后点击"Beautify JavaScript"按钮,即可得到忽略SourceMap头部注释的代码。
使用Chrome DevTools的Snippets:在Chrome DevTools中,可以使用Snippets功能来处理压缩后的代码。首先,打开DevTools,点击左上角的">"按钮,选择"Snippets"选项卡。然后,点击右键,选择"New"创建一个新的Snippet。在Snippet编辑器中,输入以下代码:
// ==UserScript==
// @name Ignore SourceMap Header
// @match *://*/*
// @run-at document-start
// ==/UserScript==
(function() {
const observer = new MutationObserver(function(mutationsList, observer) {
const scripts = document.querySelectorAll('script');
scripts.forEach(function(script) {
if (script.src.endsWith('.js.map')) {
script.parentElement.removeChild(script);
}
});
});
observer.observe(document, { childList: true, subtree: true });
})();
保存Snippet后,点击右键选择"Run"来执行代码。这样,加载的页面中的所有包含SourceMap的脚本都会被忽略。
这些方法可以帮助我们在不同主机上忽略SourceMap头部注释,以减小文件大小。但需要注意的是,如果需要调试和定位问题,最好不要删除SourceMap头部注释。