2016-11-20 53 views
0

试图为一个项目设置我的gulp文件,我想编译的更少,然后缩小它并保存到一个新的文件夹。gulp,css保存到dist/css/less,应该是dist/css

我的较少文件保存在app/less/styles.less,编译后的css文件应该保存为dist/css/styles.css,但它的保存为dist/css/less/styles.css

我在这里做错了什么?

var app = 'app/', 
dist = 'dist/', 
appStyles = app + '**/*.less'; 

gulp.task('compilecssremote', function(){ 
    return gulp.src(appStyles) 
    .pipe(plumber({ 
    errorHandler: onError 
    })) 
    .pipe(changed(dist)) //must be dist 
    .pipe(urladjuster({ 
    prepend: '/' + project + '/dist/' //based on location of CSS files 
    })) 
    .pipe(less()) 
    .pipe(minifycss({keepBreaks: false})) 
    .pipe(gulp.dest(dist + 'css')) 
}); 

回答

0

这是预期的行为,当您使用gulp.src'app/**/*.less(又名你appStyles)来匹配源文件与像app/less/styles.less路径。还有两件在这里了解:

  1. 默认情况下,之前的一切在你的gulp.src路径中的第一水珠将从输出路径被省略。在这种情况下,这是**之前的所有内容,也就是app/。这就是为什么你的输出css文件不是'dest/app/…。 (关于这方面的更详细的讨论,请参阅this answer

  2. 第一个glob和on匹配的路径保留在输出路径中。在这种情况下,匹配文件'app/less/styles.less'中的less/(即**代表的部分'app/**/*.less')。 (这是在你的问题的情况下,跑题了,不过这个功能是非常有用的保存相对文件结构。)

使用#1 &#2,一个快速的解决将是从输出修剪less/将它放在gulp.src的第一个水平之前。例如,更改appStyles = app + 'less/**/*.less'