Компиляция LESS с использованием gulp-useref и gulp-less?
Я пытаюсь скомпилировать мои файлы LESS с помощью плагина gulp-useref, но похоже, что плагин без gulp никогда не выводит скомпилированную версию моих файлов LESS в конвейере. Файлы LESS объединяются с другими файлами CSS без компиляции.
Я попытался скомпилировать LESS отдельно, используя только gulp-less, и он работает хорошо, но я понятия не имею, почему он конфликтует с плагином gulp-useref.
Вот мой глоток:
var gulp = require('gulp');
var rm = require('gulp-rimraf');
var gulpif = require('gulp-if');
var less = require('gulp-less');
var cssmin = require('gulp-minify-css');
var useref = require('gulp-useref');
gulp.task('clean', function () {
return gulp.src(['public'])
.pipe(rm({force: true}));
});
gulp.task('refs', ['clean'], function () {
var assets = useref.assets({searchPath: '.'});
return gulp.src(['templates/**/*.html'])
.pipe(assets)
.pipe(gulpif('*.less', less()))
.pipe(gulpif('*.css', cssmin()))
.pipe(assets.restore())
.pipe(gulpif('*.html', useref()))
.pipe(gulp.dest('public/templates'));
});
Заранее спасибо за ответы!
3 ответа
Насколько я понимаю, это то, что вы пытаетесь не возможно.
с:
<!-- build:css css/combined.css -->
<link href="css/one.css" rel="stylesheet">
<link href="css/two.css" rel="stylesheet">
<link rel="stylesheet/less" type="text/less" href="less/website.less" />
<!-- endbuild -->
useref.assets создает поток для css / комбинированный.css, который содержит содержимое css / one.css, css / two.css less / website.less. Из-за названия вашего потока css/combined.css
только .pipe(gulpif('*.css', cssmin()))
Матчи.
Если вы используете .pipe(gulpif('*.css', less()))
Чем меньше компилятор скомпилирует содержимое всех трех файлов в css / комбинированный.css.
Таким образом, вы можете использовать:
.pipe(gulpif('*.css', less()))
.pipe(gulpif('*.css', cssmin()))
Выше скомпилированы ваши *.css и *.less файлы с компилятором Less (потому что Less может компилировать css, результат может быть ожидаемым)
Попробуйте добавить пользовательский тип
var assets = useref.assets({
searchPath: '.',
types: ['js', 'css', 'less']
});
var gulp = require('gulp');
var sass = require('gulp-sass');
var concat= require('gulp-concat');
var minifyCss = require('gulp-cssnano');
var uglify = require('gulp-uglify');
var pump = require('pump');
var useref = require('gulp-useref');
gulp.task('sass', function(){
gulp.src(['css/**/*.scss' ,'css/**/*.css' ])
.pipe(sass()) // Using gulp-sass
.pipe(minifyCss())
.pipe(concat('all.css'))
.pipe(gulp.dest('build/css'))
});
gulp.task('compressJS', function (cb) {
return gulp.src(['lib/*.js'])
.pipe(concat('concat.js'))
.pipe(uglify())
.pipe(gulp.dest('build/js'))
});
var gulp = require('gulp'),
useref = require('gulp-useref');
gulp.task('default', ['sass'] , function () {
//нема
return gulp.src('*.html')
.pipe(useref())
.pipe(gulp.dest('dist'));
});
затем включите файл all.css, сгенерированный gulp.task('sass')
<link rel="stylesheet" href="css/all.css" >