Cuối tuần này tôi bắt đầu chơi đùa với ngụm. Tôi muốn thiết lập một nhiệm vụ mà có thểngụm-sass autoprefix sourcemap
- biên dịch file sass tôi
- Tiếp tục làm việc nếu tôi phạm sai lầm trong file sass
- làm việc với sass Bootstrap
- tạo sourcemaps
- trình duyệt append tiền tố
- tiêm css biên soạn wihtout tải lại trình duyệt
- nhanh (1-2 s top trong dev env)
tôi có hầu hết các bước nhưng tiền tố trình duyệt đã cho tôi một thời gian khó khăn Dưới đây là những gì tôi có cho đến nay
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']);
});
Vấn đề là autoprefixer mang lại cho tôi một lỗi và messes lên sourcemaps
các lỗi tôi nhận được: "nuốt chửng-sourcemap-ghi: không tìm thấy tập tin nguồn: C: \ WEB \ skilldrill_v1 \ skilldrill \ sass \ app.css"
Vì vậy, đối với một số lý do nó cố gắng tìm các tệp css trong thư mục sass
[Chỉnh sửa]
Tôi đã xác định được sự cố nhưng chưa thể giải quyết được. Đường ống này hoạt động: gulp-autoprefixer -> làm một số thứ -> tiền tố tác vụ -> vinyl-sourcemaps-áp dụng
Trên dòng thứ 35 của gulp-autoprefixer \ index.js: applySourceMap (tệp, res.map .toString()); Từ thời điểm này, vinyl-sourmaps-apply hiểu rằng tập tin hiện tại (trong trường hợp của tôi app.css) cũng trở thành một nguồn.
Dưới đây là các vấn đề: a) nó cho rằng tệp css nằm trong cùng thư mục như được chỉ định trong gulp.src() thường không đúng b) nó không hoạt động chỉ với các dòng được thêm vào trình tự động sửa lỗi, nhưng thêm tham chiếu vào mỗi dòng đơn
Bạn có ý tưởng nào dựa trên thông tin này không? Tôi bắt đầu đào trong gulp-concat xử lý một vấn đề tương tự đúng cách.
Tôi nghĩ rằng tôi đã có một vấn đề tương tự như bạn với sourcemaps và gulp-autoprefixer. Tôi cũng đã thử một công việc xung quanh phương pháp, chạy các sourcemaps hai lần. Những gì tôi đã tìm thấy gần đây là sử dụng PostCSS với CSSNext dường như để giải quyết vấn đề. Có một cái nhìn [ở đây] (https://stackoverflow.com/questions/40937659/gulp-sass-sourcemap-sources-are-incorrect) để xem liệu giải pháp có hữu ích cho bạn hay không. – freeMagee