windows - Windows上的gulp-compass fileName错误

标签 windows sass gulp compass

我是第一次使用 compass/susus,并且想使用liveReload来避免重新加载手指。

我在安装 compass 本身之后安装了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] } }

因此,我收集到的是返回源文件的路径(在我的Windows中,它位于“E:\Program Files [...]”内部),不带引号,这使得第一个空格字符看起来像是末尾的路径,对不对?

如何将其放在引号中?我正在做所有这些工作,因此我可以将gulp与 compass 配合使用。

最佳答案

我遇到了同样的问题。

在第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文件夹之外)。

关于windows - Windows上的gulp-compass fileName错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28051764/

相关文章:

css - 使用第 n 个子值作为 SASS 变量

javascript - 全局模式中的前导 ./有何作用?

css - 为什么 gulp 按字母顺序编译我的 SCSS 文件?

c++ - FindFirstVolume 不返回 EFI 系统分区

c - 以编程方式在 Windows 中获取可用 RAM?

javascript - mini-css-extract-plugin 生成两个额外的 JS 文件

node.js - 使用 nodejs 服务器配置 browserSync

windows - Windows下纯Qt应用使用KDE风格

windows - 从子文件夹调用批处理文件时如何获取当前目录名称?

internet-explorer - compass 背景图像(线性渐变)不适用于 IE