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

Перестает обновляться style.min.css в сборке gulp. Почему?

Сборка gulp, сначала все работает как надо и из style.scss все конвертится в style.min.css. Потом в какой-то момент перестает работать и выдает ошибку Did you forget to signal async completion? в чем может быть дело? на фото структура проекта 66dca9c1bbbee678328066.png66dca9ca6df63489528613.png
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
dmitryfx
@dmitryfx
Советую не мучиться с галпом, с ним вечно какие-то проблемы были, фиг знает, как он там под капотом работает.
Пришел к тому, чтобы запускать подобные сборки просто как node js код. Абсолютный контроль над процессом и никаких непонятных глюков. Поначалу было сложновато, но зато никакой галп-магии, мы просто оперируем файлами. Если понадобится более сложная сборка, все равно придется в этом разобраться)

Код только для примера, в нем много лишнего.

Вот так создаем слушатель событий (у галпа под капотом тот же chokidar):

async function Default(cb) {

	

	cl( chalk.black.bgGreen( "Default..." ) );
	cl('\n');
	
	
	var livereload_server = livereload.createServer();
	
	
	let chokidar_settings = {
		ignoreInitial: true,
		usePolling: true,
		interval: 200,
		ignorePermissionErrors: true,
		awaitWriteFinish: {
			stabilityThreshold: 300,
			pollInterval: 100
		}
	};

	

	let process_css_path = [
		
		'./project_www/assets/components/project/app2/scss/*.scss',
		'./project_www/assets/components/project/test_360/scss/*.scss'
	];
	
	let process_css_path_ignored = [
		
	];

	let chokidar_settings_Process_CSS = {...chokidar_settings};
	chokidar_settings_Process_CSS.ignored = process_css_path_ignored;
	chokidar.watch( process_css_path, chokidar_settings_Process_CSS ).on('all', function (event, path) {

		if( event == 'unlink' || event == 'unlinkDir' ) return;

		Process_CSS(event, path);
		
		path = path.replace('.scss', '.css');
		
		path = 'D:/aera/' + path;
		
		livereload_server.refresh( path );

	});


А вот сама функция преобразования стилей:

function Process_CSS( event, path ){

	
	cl( chalk.black.bgGreen( ` CSS Processing ${path} \n`) );

	if( Fs.existsSync( path ) === false ){
		cl( chalk.yellow( `Not exists: ${path} \n` ) );
		return;	
	}
	
	path = Path.resolve( path );
	let scss_path = Path.dirname( path );
	let scss_name = Path.parse( path ).name;
	
	let out_css;
	try{
		out_css = sass.compile( path );
	} catch(err){
		cl( chalk.red( `${ err } \n` ) );
		return;
	}
	
	out_css = out_css.css;
	
	Fs.writeFileSync( scss_path + `/../css/${ scss_name }.css`, out_css, {encoding: 'utf8'} );
	
	cl( chalk.black.bgGreen('...OK \n') );

};
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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