Gulp-uglify sonrası Typescript kaynak haritaları yanlış
Aşağıdaki işlemleri gerçekleştiren bir gulp/typescript iş akışı oluşturdum.
- gulp.watch(..)
- gulp-typescript
- gulp-uglify
- gulp-sourcemaps
aşağıdakileri kullanarak..
var tsProject = ts.createProject('tsconfig.json') // See below for options
gulp.task('watch-ts', function () {
return gulp.watch(paths.scriptSrc + '/**/*.ts', ['compile-ts']);
});
gulp.task('compile-ts', function () {
var tsResult = gulp
.src(paths.scriptSrc + '/**/*.ts')
.pipe(sourcemaps.init())
.pipe(ts(tsProject));
return tsResult
.js
.pipe(uglify())
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(paths.scripts));
});
{
"compilerOptions": {
"outFile": "app.js",
"target": "es5",
"removeComments": true,
"noImplicitAny": false,
"module": "system",
"experimentalDecorators": true,
"declaration": false,
"noEmitOnError": true
}
}
Yani js dosyası + sourcemap oluşturulduktan sonra, Chrome hata ayıklayıcısını kullanarak TypeScript dosyalarımdan birinde adım adım ilerlemeye ve hata ayıklamaya çalıştığımda, kesme noktaları her yere sıçrıyor ve her F10 tuşuna basıldığında bir satır rastgele bir satıra atlıyor. Sourcemap’ler oluşturulurken garip bir şeyin olduğuna inanıyorum ama ne olduğunu bilmiyorum.
"`.pipe(uglify())`" kısmını yorum satırı haline getirirsem mükemmel bir şekilde hata ayıklayabilirim ve hiçbir sorun yok.
Bunu neyin tetikleyebileceğini bilen var mı?
Cevap #1
Uglify eklentisi js kodunuzu sıkıştırır ama sourcemapleri değiştirmez. Bu yüzden sourcemap tarafından sağlanan eşlemeler artık gerçek js dosyalarınızla eşleşmez.
Çoğu uglify eklentisinin kendi başına sourcemap oluşturma seçeneği vardır, bu yüzden bunu deneyebilirsiniz.
İki farklı derleme görevi yapmanızı tavsiye ederim. Biri geliştirme için, kodunuzu sıkıştırmayan ve kaynak haritalarını üreten, diğeri ise üretim için, kodunuzu sıkıştıran ama kaynak haritalarını üretmeyen.