在Windows上gulp-compass fileName错误

时间:2015-01-20 17:39:41

标签: windows sass gulp compass

我第一次使用指南针/ susy,并希望使用liveReload来保持手指的重装。

我在安装指南针后安装了gulp-compass,但它显然没有引号返回src文件路径。

这是我的gulpfile.js:

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

// Compass
gulp.task('compass', function () {
    gulp.src('sass/*.sass')
    .pipe(compass({
        config_file: './config.rb',
        css: 'css',
        sass: 'sass',
        require: ['susy']
    }))
    .on('error', console.error.bind(console))
    .pipe(gulp.dest('temp/'));
});

并返回以下错误:

Starting 'compass'...
'E:\Program' not recognizes as a internal or external command [...]

{ [Error: Compass failed]
  message: 'Compass failed',
  fileName: 'E:\\Program Files\\wamp\\[...]\\style.sass',
  showStack: false,
  showProperties: true,
  plugin: 'gulp-compass',
  __safety: { toString: [Function] } }

所以我收集的是源文件的路径(在我的窗口中,位于“E:\ Program Files [...]”内部)没有引号返回,使第一个空白字符看起来像路径的尽头,对吧?

如何将其置于引号内?我正在做所有这些工作,顺便说一句,我可以用指南针。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。

在第78行的node_modules \ gulp-compass \ lib \ compass.js中,这一切都出错了:

options.push(opts.project.replace(/\\/g, '/'));

以某种方式,当我注释掉这一行时,没有更多的错误了。用/ somehow替换\会导致路径Program Files中的空格失败。 这是第76至81行:

options.push(opts.task);
  if (process.platform === 'win32') {
    // options.push(opts.project.replace(/\\/g, '/')); // <-- this line causes the error
  } else {
   options.push(opts.project);
}

因此,现在可以解决此问题。

但是应该有一个更好的方法来解决此问题(至少在node_modules文件夹之外)。