我將直接以我的代碼結構爲例。假設以下三個簡單文件駐留叫同一個目錄內/path/from/root/js/src
爲包含npm require和gulp模塊的單個js文件生成SourceMaps
module1.js:
console.log(1);
module2.js:
console.log(2);
app.js:
require('./module1');
require('./module2');
然後,我正在使用下面的gulp任務來將JavaScript編譯成一個文件,其中包含gulp:
var gulp = require('gulp');
var sourcemaps = require('gulp-sourcemaps');
var path = require('path');
var browserify = require('gulp-browserify');
gulp.task('default', function() {
gulp.src(['./js/src/app.js'])
.pipe(sourcemaps.init())
.pipe(browserify()).on('error', function(err){
console.log(err);
})
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(function(file) {
file.base = path.dirname(file.path);
return path.join(path.dirname(file.path), '/../');
}))
});
運行gulp
後我收到編譯的JavaScript app.js
剛剛記錄1 2和app.js.map
如預期,但在瀏覽器中的原始文件沒有提及。
您可以通過查看控制檯行1和2來檢查它們是否由app.js
引用,而不是由module1|2.js
引用。如果我需要修復一個錯誤,那麼隨着文件在我的項目中越來越大,我不知道哪個文件將來會生成控制檯符號。
我在做什麼錯?我沒有正確使用源地圖嗎?
的app.js.map
文件沒有引用的模塊,它看起來像這樣:
{
"version":3,
"names":[],
"mappings":"",
"sources":["app.js"],
"sourcesContent":["require('./module1');\r\nrequire('./module2');"],
"file":"app.js"
}