我正在使用更少和咕噜声,并且正在大口大口地吞咽。
我的少工作。当我运行时:
lessc public/less/myapp.less
我得到的工作输出没有错误。我所有的更少,包括包括,都在公共/更少,顺便说一句。这是我的gulpfile:
var gulp = require('gulp');
var prefixer = require('gulp-autoprefixer');
var less = require('gulp-less');
gulp.task('compileLess', function () {
gulp
.src('./public/less/*')
.pipe(less({
paths: ['./public/less'], // Search paths for imports
filename: 'myapp.less'
}))
.pipe(gulp.dest('./public/css'));
});
// The default task (called when you run `gulp`)
gulp.task('default', function() {
gulp.run('compileLess');
// Watch files and run tasks if they change
gulp.watch('./public/less/*.less', function(event) {
gulp.run('less');
});
});
当我大口大口地奔跑时,我得到:
~/Documents/myapp: gulp
[gulp] Using file /Users/me/Documents/myapp/gulpfile.js
[gulp] Working directory changed to /Users/me/Documents/myapp
[gulp] Running 'default'...
[gulp] Running 'compileLess'...
[gulp] Finished 'compileLess' in 11 ms
[gulp] Finished 'default' in 41 ms
stream.js:94
throw er; // Unhandled stream error in pipe.
^
Error: variable @brightblue is undefined
@brightblue是在 myapp.less 开始时导入的文件中定义的。
@import "./colors.less";
body {
background-color: @brightblue;
}
- 为什么大口大口地不拿起我的外套?为 less 指定"路径"选项应该可以使其工作,但它并没有修复它。
- 调试它的好方法是什么?例如,我没有行号。
- 有没有办法让大口大口地工作?
区别在于我正在编译的内容:
- 当我运行
lessc myapp.less
时,我正在编译主要的less文件及其依赖项 - 当我使用上面的gulpfile运行
gulp
时,我正在单独编译每个更少的文件,因为gulp.src*.less
不是myapp.less
。由于这些更少的文件只是从主的less文件加载的,所以它们没有@imports它们所依赖的东西(因为myapp.less依赖于它们)。例如,在每个单独的文件中导入"theme.less"是没有意义的,而不仅仅是在myapp.less中首先导入它。
这是工作版本:
// Run 'gulp' to do the important stuff
var gulp = require('gulp');
var prefixer = require('gulp-autoprefixer');
var less = require('gulp-less');
var path = require('path');
gulp.task('less', function () {
gulp
.src('./public/less/myapp.less') // This was the line that needed fixing
.pipe(less({
paths: ['public/less']
}))
.pipe(prefixer('last 2 versions', 'ie 9'))
.pipe(gulp.dest('./public/css'));
});
// The default task (called when you run `gulp`)
gulp.task('default', function() {
gulp.run('less');
// Watch files and run tasks if they change
gulp.watch('./public/less/*.less', function(event) {
gulp.run('less');
});
});
编辑:请参阅下面的@noducks答案,以获取适用于最新 gulp 的改进版本。
注意到那里弹出了几个gulp.run
弃用警告。这将修复它们,并添加一些错误处理。我的目录结构略有不同。
'use strict';
var gulp = require('gulp');
var prefixer = require('gulp-autoprefixer');
var less = require('gulp-less');
var gutil = require('gulp-util');
var plumber = require('gulp-plumber');
gulp.task('less', function() {
gulp
.src('./less/app.less')
.pipe(plumber(function(error) {
gutil.log(gutil.colors.red(error.message));
gutil.beep();
this.emit('end');
}))
.pipe(less())
.pipe(prefixer('last 2 versions', 'ie 9'))
.pipe(gulp.dest('./css'));
});
gulp.task('less:watch', function(){
gulp.watch(['./less/*.less', './less/module/*.less'], ['less']);
});
gulp.task('default', ['less','less:watch']);
的工作版本,使用 gulp-watch
和 gulp-connect
进行实时重新加载。
gulp.task('less:dev', function () {
gulp
.src('app/styles/**/*.less', {read: false})
.pipe(watch(function () {
return gulp
.src('app/styles/main.less')
.pipe(less())
.pipe(gulp.dest('app/styles/'))
.pipe(connect.reload());
}));
});
另一个原因可能是您在main.less
中使用@import (inline)
,这将导致导入的文件无法处理。
见 http://lesscss.org/features/#import-options