2015-02-05 71 views
1

我毫不懷疑其他人已經得到這個工作......我只是沒有完全計算出如何現在。Libsass與Susy不工作+ Gulp

咕嘟咕嘟

var gulp = require('gulp'); 
var sass = require('gulp-sass'); 
var handleErrors = require('../util/handleErrors'); 
var sourcemaps = require('gulp-sourcemaps'); 
var minifyCSS = require('gulp-minify-css'); 

gulp.task('sass', function() { 
    return gulp.src('./frontend/sass/style.scss') 
     .pipe(sourcemaps.init()) 
     .pipe(sass({ 
      'require':'susy' 
     })) 
     //.pipe(minifyCSS()) 
     .pipe(sourcemaps.write('./app/www/css')) 
     .on('error', handleErrors) 
     .pipe(gulp.dest('./app/www/css')) 
}); 

薩斯

@import "susy"; 

咕嘟咕嘟運行

[23:58:08] Starting 'sass'... 

stream.js:94 
     throw er; // Unhandled stream error in pipe. 
      ^
Error: file to import not found or unreadable: susy 
Current dir: C:/var/www/rnli.hutber.com/frontend/sass/ 

我已經安裝了[email protected]沿着側根gulp文件有以下:gem install susy

當前工作設置與一飲而盡,紅寶石薩斯

我做不過有工作,這證實了超對稱是通過與已安裝的寶石工作下面的代碼:

var gulp = require('gulp'); 
var sass = require('gulp-ruby-sass'); 
var handleErrors = require('../util/handleErrors'); 
var minifyCSS = require('gulp-minify-css'); 

gulp.task('sass', function() { 
    return gulp.src('./frontend/sass/style.scss') 
     .pipe(sass({ 
      'sourcemapPath':'./app/www/css', 
      'require':'susy' 
     })) 
     //.pipe(minifyCSS()) 
     .on('error', handleErrors) 
     .pipe(gulp.dest('./')) 
}); 

注意上面的代碼將不使用[email protected]' It will only work as I can tell with v0.7.1`

工作

的package.json

"devDependencies": { 
    "gulp": "~3.8.10", 
    "gulp-sass": "~1.3.2", 
    "gulp-ruby-sass": "~0.7.1", 
    "gulp-sourcemaps": "~1.3.0", 
    "susy":"~2.2.1" 
    } 

如何獲得susy正常工作,並能編譯成css

+0

不是直接在主題上,但也許有幫助,我得到了[susy和libsass使用ember-cli](https://github.com/ericam/susy/pull/406#issuecomment-69874891)。 – steveax 2015-02-13 08:38:17

回答

4

我已經成功地得到超對稱工作libsass(一飲而盡,SASS)

一飲而盡,薩斯需要知道在哪裏可以找到與@import指令指定的文件。你可以嘗試在gulp-sass中設置includesPath選項來指向你本地的susy副本。

正如我已經安裝了涼亭超對稱,我有這樣的事情:

var sass = require('gulp-sass'); 

gulp.task('sass', function() { 
    return gulp.src(config.src) 
    .pipe(sass({ 
     includePaths: [ 
     'bower_components/susy/sass' 
     ] 
    })) 
    ... 
}); 
+0

也許我需要使用它與鮑爾,但這似乎很邏輯imo :)。我正在使用類似的設置,並試圖從我的節點包中包含它。但是我的文件被稱爲'_susy.scss'所以我想也許我需要將@import更改爲'_susy'。我的項目設置就像這樣>'node_modules'susysass',所以我用''gulp.js''作爲根源。 'loadincludePaths: \t \t \t \t './node_modules/susy/sass//' \t \t \t]'嗯我喜歡這個主意但是...我只是無法得到它的工作。 – 2015-02-12 00:25:33

+0

Sass partials的前綴是下劃線,所以在'_susy.scss'的情況下,您仍然會使用'@import「susy」;'。請記住,gulp-sass包含路徑的選項是includePaths而不是loadincludePaths。也許可以創建一個完整的吞嚥任務的要點? – 2015-02-12 01:26:59

+0

我的不好,我實際上沒有做「_susy」的包含,我相信如果我有它會錯誤地說它找不到susy。事實上,改變爲includePaths是迄今爲止它爲我工作的原因。如果你閱讀另一個答案的評論,你會看到我目前在哪裏。 – 2015-02-16 11:18:41

1

我有同樣的問題,但隨着咕嚕代替咕嘟咕嘟。

你可以做的是使用susy的完整路徑。

首先找出你的寶石安裝位置(gem env,並查找GEM PATHS;在我的情況下,他們在/Library/Ruby/Gems/2.0.0)。

,然後在style.scss文件,而不是@import susy你這樣做:

@import "/Library/Ruby/Gems/2.0.0/gems/susy-2.2.2/sass/susy"; 

(您超對稱的版本替換2.2.2,但如果你要使用libsass你應該使用的東西挺了起來到目前爲止;並且當你升級時你將不得不改變那條線......)

不如優雅,但使用libsass支付一小筆費用。

更新:如果你把includePaths: ['/Library/Ruby/Gems/2.0.0/gems/susy-2.2.2/sass']在咕嘟咕嘟的任務,你可以逃脫只是「@import susy;」,雖然你剛移動的untidyness別的地方。

這可能是更好的做法與鮑爾,如在這裏的另一個答案中解釋,併爲該項目本地susy安裝;但是因爲我還沒有使用涼亭(對我很恥辱),所以我只用一個全球懷疑副本來進行我的所有項目。

+0

它讓我通過了susy的錯誤......當然......但是當我開始想要使用susy mixins時,例如'@include span'它不會識別跨度......我認爲這確實是奇怪的。 – 2015-02-12 23:17:58

+0

這很奇怪。你可以發佈你的確切進口和確切的錯誤嗎? – yivi 2015-02-13 08:25:01

+0

我正在使用'style.sccs'內部:@import「susy」;在我的gulp文件中'includePaths:['./node_modules/susy/sass']'來自'@include border-box-sizing的第一個錯誤;'錯誤'錯誤:沒有用mixin命名的border-box-sizing' – 2015-02-15 13:29:44