Questo fine settimana ho iniziato a giocare con il sorso. Ho voluto impostare un compito che puògulp-sass autoprefix sourcemap
- compilare i miei file Sass
- continuare a lavorare se faccio degli errori nel file di sass
- lavoro con sass Bootstrap
- generare sourcemaps
- aggiungi prefisso del browser
- inietti il browser compilato css wihtout ricarica
- veloce (1-2 s top dev ENV)
ho ottenuto la maggior parte dei passi, ma prefissi navigatore mi ha dato un momento difficile Ecco quello che ho ottenuto finora
var browserSync = require('browser-sync');
var reload = browserSync.reload;
var filter = require('gulp-filter');
var gulp = require('gulp');
var sass = require('gulp-sass');
var autoprefixer = require('gulp-autoprefixer');
var notify = require("gulp-notify");
var sourcemaps = require('gulp-sourcemaps');
var concat = require('gulp-concat');
var config = {
sassPath: './sass',
bower: './bower_components',
bootstrap: './bower_components/bootstrap-sass-official/assets/stylesheets',
fonts: './bower_components/bootstrap-sass-official/assets/fonts'
};
gulp.task('sass', function() {
return gulp.src(config.sassPath + '/**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({
//outputStyle: 'compressed',
outputStyle: 'nested',
precision: 10,
includePaths: [
config.sassPath,
config.bower,
config.bootstrap
],
onError: function (err) {
notify().write(err);
}
}))
.pipe(concat('app.css'))
.pipe(autoprefixer('last 2 version'))
.pipe(sourcemaps.write())
.pipe(gulp.dest('css'))
.pipe(filter('**/*.css')) // Filtering stream to only css files
.pipe(browserSync.reload({stream:true}));
});
gulp.task('browser-sync', function() {
browserSync({
logLevel: "info",
server: {
baseDir: './',
//directory: true,
routes: {
"/fonts": config.fonts
}
}
});
});
gulp.task('default', ['sass', 'browser-sync'], function() {
gulp.watch(['./**/*.html', 'js/**/*.js'], reload);
gulp.watch('sass/*.scss',['sass']);
});
Il problema è che l'autoprefixer mi dà un errore e scombina le sourcemaps
l'errore che ottengo: "gulp-Sourcemap-scrittura: il file di origine non trovato: C: \ WEB \ skilldrill_v1 \ skilldrill \ sass \ app.css"
Quindi per qualche ragione cerca di trovare i file css nella directory sass
[Modifica]
Sono riuscito a individuare il problema, ma non ho potuto ancora risolverlo. Il tubo questa cosa funziona: gulp-autoprefixer -> fare alcune cose -> compiti come prefisso -> vinile-sourcemaps-applicano
Sulla linea 35 ° di gulp-autoprefixer \ index.js: applySourceMap (file, res.map .accordare()); Da questo punto la vinyl-sourmaps-apply capisce che anche il file corrente (nel mio caso app.css) diventa una fonte.
Qui ci sono i problemi: a) pensa che il file CSS è nella stessa cartella come specificato nel gulp.src(), che di solito non è vero b) non funziona solo con le linee aggiunte da l'autoprefixer, ma aggiunge riferimento a ogni singola riga
Hai qualche idea basata su queste informazioni? Ho iniziato a scavare nel gulp-concat che gestisce correttamente un problema simile.
Penso di aver avuto un problema simile come con sourcemaps e gulp-autoprefixer. Ho anche provato a lavorare su un metodo, eseguendo due volte il sourcemaps. Quello che ho scoperto di recente sta usando PostCSS con CSSNext sembra risolvere il problema. Dai un'occhiata [qui] (https://stackoverflow.com/questions/40937659/gulp-sass-sourcemap-sources-are- incorrect) per vedere se la soluzione è utile per te. – freeMagee