2014-02-07 26 views
2

我有一个gulp.js配置设置为在保存时自动编译我的SASS和CoffeeScript。它的工作原理除了相对路径完全丢失,并且所有文件都输出到一个单一的目录中。当编译最终的CSS和JS文件时,我想保留我的app/assets/sassapp/assets/coffee目录的子目录结构。这里是我的gulpfile:gulp.js去除输出文件的相对路径

var gulp = require('gulp'); 
var plumber = require('gulp-plumber'); 
var gutil = require('gulp-util'); 
var minifycss = require('gulp-minify-css'); 
var autoprefixer = require('gulp-autoprefixer'); 
var sass = require('gulp-ruby-sass'); 
var coffee = require('gulp-coffee'); 

var sassDir = 'app/assets/sass'; 
var coffeeDir = 'app/assets/coffee'; 

gulp.task('sass', function() { 
    return gulp.src(sassDir + '/**/*.scss') 
     .pipe(plumber()) 
     .pipe(sass({ style: 'compress' }).on('error', gutil.log)) 
     .pipe(autoprefixer('last 10 versions')) 
     .pipe(minifycss()) 
     .pipe(gulp.dest('public/css')); 
}); 

gulp.task('coffee', function() { 
    return gulp.src(coffeeDir + '/**/*.coffee') 
     .pipe(plumber()) 
     .pipe(coffee({ bare: true }).on('error', gutil.log)) 
     .pipe(gulp.dest('public/js/coffee)')); 
}); 

gulp.task('watch', function() { 
    gulp.watch(sassDir + '/**/*.scss', ['sass']); 
    gulp.watch(coffeeDir + '/**/*.coffee', ['coffee']); 
}); 


gulp.task('default', ['sass', 'coffee', 'watch']); 
+4

请参阅现有的答案[点击这里](http://stackoverflow.com/a/21387311/145185)和[这里](http://stackoverflow.com/a/21557049/145185)。 – OverZealous

+0

当我注释掉.src和.dest之间的所有管道时,{base:'...'}解决方案起作用,但将sass()添加回来会产生相同的问题。 –

+2

然后'gulp-sass'插件可能会从源文件中删除或修改'relative'属性。我不使用那个插件,所以我不确定。你可以使用['gulp-debug'插件](https://npmjs.org/package/gulp-debug)来查看你的文件发生了什么。 – OverZealous

回答

-1

只分离路径串/并获得最后是文件名和扩展名,然后削减它 获取文件夹路径

gulp.task('testing', function() { 
     var orginalFile="tt/ee/style.scss"; 

     var pathArray=orginalFile.split('/'); 
     var destination=orginalFile.replace(pathArray[pathArray.length-1],"") 

    gulp.src(orginalFile)  
    .pipe(sass()) 
    .pipe(gulp.dest(destination)); 

    }) 
});