2

我试图让gulp-compass在我的 Debian linux 上工作,但收到一条错误消息,指出 Ruby 和 Compass 必须在路径中。当谈到 Gulp 时,我有点初学者,所以我可能是愚蠢的。

以下是运行我在 Gulpfile 中创建的任务时收到的确切错误消息:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: You need to have Ruby and Compass installed and in your system PATH for this task to work.

Process finished with exit code 1

我查看了其他类似的问题,这些问题建议做 agem install compass和 agem install sass但似乎都不适合我。

我的 Gulpfile 如下:

var gulp = require('gulp'),
compass = require('gulp-compass');

gulp.task('stylesheets', function(){
    return gulp.src('**/*.scss')
        .pipe(compass({
            config_file: './config.rb',
            css: 'css',
            sass: 'sass'
        }))
        .pipe(gulp.dest('css'));
});

我可以跑ruby -vcompass -v我可以看到这些在我的路径中是正确的,并且echo $PATH显示 ruby​​ 肯定在那里。

我想知道这是否与我使用 RVM 安装 ruby​​ 或我使用 Bundler 在我的项目中安装 gems 的事实有关。我的 Gemfile 如下:

source 'https://rubygems.org'
gem 'susy'
gem 'compass'
gem 'breakpoint'

我已经安装了 gemsbundle install并且还尝试了bundle_exec: truegulp-compass 中的选项(尽管说实话,我真的不知道这是因为不是 Bundler 专家)。我已经尝试重新安装 Ruby。

有人知道为什么我会收到上述错误消息吗?在使用 Grunt 进行类似操作时,我从未遇到过这样的错误。

4

1 回答 1

0

我终于设法解决了这个问题。我卸载了 RVM,rvm implode然后使用常规的apt-get install ruby.

一旦我这样做了,一切都很好。我不得不对我的 gulpfile 做一个小的调整,所以现在是:

var gulp = require('gulp'),
compass = require('gulp-compass');

gulp.task('stylesheets', function(){
    console.log();
    return gulp.src('sass/**/*.scss')
        .pipe(compass({
            config_file: './config.rb',
            css: 'css',
            sass: 'sass'
        }))
        .pipe(gulp.dest('css'));
});

这并不完全是理想的,因为当当前稳定版本(撰写本文时)为 2.2.2 时,我现在坚持使用旧版本的 Ruby(ruby 2.1.5p273)。我宁愿使用 RVM,但现在就可以了。

于 2015-05-18T20:13:22.100 回答