Задать вопрос
@ernst94

Не компилирует sass в css используя gulp почему?

Добрый день.
Может быть кто-то сталкивался с такой проблемой и может помочь в решении.
Gulp запускается, все бы все работает отлично, при сохранении изменений в html-файле - все отлично: страница перезагружается и выводит достоверную инфу, но когда сохраняешь sass, не происходит на сайте никаких изменений. Помогите пожалуйста
var gulp         = require('gulp'),
		sass         = require('gulp-sass'),
		autoprefixer = require('gulp-autoprefixer'),
		cleanCSS    = require('gulp-clean-css'),
		rename       = require('gulp-rename'),
		browserSync  = require('browser-sync').create(),
		concat       = require('gulp-concat'),
		uglify       = require('gulp-uglify');

gulp.task('browser-sync', ['styles', 'scripts'], function() {
		browserSync.init({
				server: {
						baseDir: "./app"
				},
				notify: false
		});
});

gulp.task('styles', function () {
	return gulp.src('sass/*.sass')
		// output non-minified CSS file
		.pipe(sass({
		includePaths: require('node-bourbon').includePaths
		}).on('error', sass.logError))
		.pipe(autoprefixer({browsers: ['last 15 versions'], cascade: false}))
		.pipe(gulp.dest('app/css'))
		// output the minified version
		.pipe(cleanCSS())
		.pipe(rename({suffix: '.min', prefix : ''}))
		.pipe(gulp.dest('app/css'))
		.pipe(browserSync.stream());
});


gulp.task('scripts', function() {
	return gulp.src([
		'./app/libs/modernizr/modernizr.js',
		'./app/libs/jquery/jquery-1.11.2.min.js',
		'./app/libs/waypoints/waypoints.min.js',
		'./app/libs/animate/animate-css.js',
		'./app/libs/Magnific-Popup/jquery.magnific-popup.min.js',
		'./app/libs/animateNumber/jquery.animateNumber.min.js',
		'./app/libs/EqualHeights/equalheights.min.js',
		'./app/libs/owl-carousel/owl.carousel.min.js',
		'./app/libs/selectize/dist/js/standalone/selectize.min.js'
		])
		.pipe(concat('libs.js'))
		.pipe(uglify()) //Minify libs.js
		.pipe(gulp.dest('./app/js/'));
});

gulp.task('watch', function () {
	gulp.watch('sass/*.sass', ['styles']);
	gulp.watch('app/libs/**/*.js', ['scripts']);
	gulp.watch('app/js/*.js').on("change", browserSync.reload);
	gulp.watch('app/*.html').on('change', browserSync.reload);
});

gulp.task('default', ['browser-sync', 'watch']);
  • Вопрос задан
  • 4672 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 2
alvvi
@alvvi
export default apathy;
В ваших исходных файлах есть следующая функция, генерирующая тэги link :

<script>
		function loadCSS(hf) {
			var ms=document.createElement("link");ms.rel="stylesheet";
			ms.href=hf;document.getElementsByTagName("head")[0].appendChild(ms);
		}
		loadCSS("header.min.css"); //Header Styles (compress & paste to header after release)
		loadCSS("main.min.css");   //User Styles + Media Queries
	</script>


Исходя из нее аттрибут href ссылается на файлы лежащие напрямую в директории app/
Однако, gulp помещает ваши файлы в app/css, что видно из таска Styles :
.pipe(gulp.dest('app/css'))

Решение : изменить аргументы функции на корректные
loadCSS("css/header.min.css"); 
loadCSS("css/main.min.css");

либо поменять пути в таске :

.pipe(gulp.dest('app/'))
Ответ написан
Комментировать
@ernst94 Автор вопроса
У меня просто не компилируется, уже все перепробовал помогите пожалуйста вот в index.html пути вот такие
<!-- Load Main CSS Compilled without JS -->
	<noscript>
		<link rel="stylesheet" href="main.min.css">
	</noscript>


<script>
		function loadCSS(hf) {
			var ms=document.createElement("link");ms.rel="stylesheet";
			ms.href=hf;document.getElementsByTagName("head")[0].appendChild(ms);
		}
		loadCSS("header.min.css"); //Header Styles (compress & paste to header after release)
		loadCSS("main.min.css");   //User Styles + Media Queries
	</script>

	<!-- Load Scripts -->
	<script>var scr = {"scripts":[
		{"src" : "js/libs.js", "async" : false},
		{"src" : "js/common.js", "async" : false}
		]};!function(t,n,r){"use strict";var c=function(t){if("[object Array]"!==Object.prototype.toString.call(t))return!1;for(var r=0;r<t.length;r++){var c=n.createElement("script"),e=t[r];c.src=e.src,c.async=e.async,n.body.appendChild(c)}return!0};t.addEventListener?t.addEventListener("load",function(){c(r.scripts);},!1):t.attachEvent?t.attachEvent("onload",function(){c(r.scripts)}):t.onload=function(){c(r.scripts)}}(window,document,scr);
	</script>


А если я пути вот так пропишу
<!-- Load CSS -->
	<script>
		function loadCSS(hf) {
			var ms=document.createElement("link");ms.rel="stylesheet";
			ms.href=hf;document.getElementsByTagName("head")[0].appendChild(ms);
		}
		loadCSS("css/header.min.css"); //Header Styles (compress & paste to header after release)
		loadCSS("css/main.min.css");   //User Styles + Media Queries
	</script>


То он будет компилировать но пути станут вот такие
694c6a1db66e4654b12dad0b3ba5e491.jpg

Помогите пожалуйста, я наверно что то не так делаю где то
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@deworkers
Middle front-end, UI designer
gulp.task('style:build', function () {
    gulp.src(path.src.style) //Выберем наш main.scss
        .pipe(sass()) //Скомпилируем
        .pipe(prefixer()) //Добавим вендорные префиксы
        .pipe(cssmin()) //Сожмем
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(path.build.css)) //И в build
        .pipe(reload({stream: true}));
});


У меня примерно такие настройки. return похоже лишний
Ответ написан
Krasnodar_etc
@Krasnodar_etc
fundraiseup
У вас что не работает-то? Может просто браузер не перезагружается? (перезагрузи без кэша вручную, проверь изменения). Или именно не копилируется?
Если не перезагружается:
gulp.watch('app/css/*.css').on("change", browserSync.reload);

в таск watch

Если не компилируется/не собирается, проверяйте пути. Сейчас, если у вас больше одного sass-файла, то будет и несколько css. Соответственно, каждый из файлов должен быть в link у вашей странички
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы