Я использую gulp-sourcemaps в моем проекте для обработки SASS и JavaScript. Мой gulpfile.js правильно генерирует файлы .map, хотя Chrome показывает неправильные имена файлов в инструментах и консоли разработчика. На данный момент я не уверен, где проблема.Неверное имя файла с помощью gulp-sourcemaps
Мой проект дерево:
gulpfile.js
public/
sass/
main.sass
import/
[.. more files and directories (all imported in main.sass) ..]
js/
main.js
test.js
min/
sourcemaps/
main.js.map
main.js
all.js
css/
main.css
sourcemaps/
main.css.map
Мои gulpfile.js
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var sass = require('gulp-ruby-sass');
var plumber = require('gulp-plumber');
var prefix = require('gulp-autoprefixer');
var sourcemaps = require('gulp-sourcemaps');
var options = {
styles: {
"source": "public/sass/main.sass",
"destination": "public/css",
"sourcemaps": "sourcemaps"
},
scripts: {
"source": "public/js/*.js",
"destination": "public/js/min",
"sourcemaps": "sourcemaps"
}
}
gulp.task('styles', function() {
return sass(options.styles.source, {sourcemap: true, style: 'compressed'})
.pipe(plumber())
.pipe(prefix("last 1 version", "> 1%", "ie 8", "ie 7"))
.pipe(sourcemaps.write(options.styles.sourcemaps))
.pipe(gulp.dest(options.styles.destination));
});
gulp.task('scripts', function() {
return gulp.src(options.scripts.source)
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(concat('all.js'))
.pipe(gulp.dest(options.scripts.destination))
.pipe(rename('main.js'))
.pipe(uglify())
.pipe(sourcemaps.write(options.scripts.sourcemaps, {includeContent: false, sourceRoot: '../../'}))
.pipe(gulp.dest(options.scripts.destination));
});
gulp.task('default', ['styles', 'scripts'], function() {
gulp.watch('public/sass/**', ['styles']);
gulp.watch('public/js/**', ['scripts']);
});
План является:
'стили' компилирует общественности/дерзость/main.sass (который включает весь мой источник SASS), авто-префикс источника, пишет sourcemap и выходов общественность/CSS/main.css сцепляет
'скрипты' все файлы в общественном/Js каталог, uglifies источника, пишет sourcemap и выводит государственный/JS/мин/main.js
После всего этого процесса я хочу оставить public/css/main.css, содержащий все мои скомпилированные, автоматически префиксные, миниатюрные источники SASS и public/js/min/main.js, содержащие все мои конкатенированные, Источник JavaScript.
В настоящее время стили в инструментах разработчика показывают имя файла _box-sizing.scss (который является зависимостью от public/sass/import/lib/neat), файл, который не содержит стилей для элемента, который я проверяю. Имя файла должно быть _header.sass (из public/sass/import/layouts/common/_header.sass).
Аналогичным образом консоль показывает main.js независимо от исходного файла. У меня есть public/js/main.js и public/js/test.js - эти файлы должны быть объединены и выведены в public/js/min/main.js. Оба эти файла содержат только один console.log() для тестирования, а имя файла, отображаемое в Chrome, - main.js для обоих.
Надеюсь, это имеет смысл. Заранее спасибо
Посидев вниз и думать об этом, я думаю, что проблема в том, что все мой источник SASS включен в общественных местах/дерзость/main.sass через @import. Поэтому, к тому времени, когда скомпилированный источник передается методу sourcemaps.write(), метод не знает, какие стили пришли откуда. У кого-нибудь есть решение для этого? ** Редактировать: ** Ломоть, что это не может быть. Инструменты разработчика распознают, что стили от _normalize.scss, поэтому не может быть. –