2015-02-05 66 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