Современные методы фрондэнд разработки предъявляют требования к js файлам, что бы они были все сконкотенированы и сминифицированны. Но процесс разработки требует, что бы все было разложено в разных файлах и папках. Поэтому приходиться js файлы для продакшена кокатенировать и минифицировать гальпом (или т.п. средствами). Но остаёться вопрос отлатки.
Если отладка для обычных js файлов в PHPStorm/WebStorm/IntelliJ IDEA мне понятна, то с отладкой реактовских файлов .jsx возникают проблема.
На данный момент у меня сделана гальповская сборка
var gulp = require('gulp');
var sourcemaps = require('gulp-sourcemaps');
var react = require('gulp-react');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
gulp.task('react', function(){
return gulp.src('www/js/reactjs/*.jsx')
.pipe(sourcemaps.init())
.pipe(react())
.pipe(concat('main.js'))
.pipe(sourcemaps.write('../maps'))
.pipe(gulp.dest('www/js/'));
});
При таком подходе ide отлавливает брекпоинты. Но если в эту сборку добавить сжатие .pipe(uglify()) , то source maps подставляет не исходные .jsx, а уже сконкотенированный, но не сжатый файл main.js.
Как сделать так, что бы файлы конкотенировась, сжимались, но при этом source maps подставлял и позволял дебажить в PHPStorm/WebStorm/IntelliJ IDEA исходные .jsx файлы?
P.S.: В данном случае расширение .jsx или .js не имеет значение и суть проблемы от этого не меняется. Я использую .jsx для наглядности того, что там используется JSX формат данных.