无法使grunt-contrib-compass工作

时间:2013-07-09 09:31:10

标签: gruntjs compass-sass

所以我有以下情况。 当我从CLI使用罗盘时,它只是工作并完全符合要求。我在compass compile文件所在的同一文件夹中运行config.rb(在styles文件夹中)。它还包含sasscss目录。 这是我的config.rb文件:

project_path = '.'
css_dir = "css"
sass_dir = "sass"
images_dir = "../../data/images"
javascripts_dir = "../scripts"

output_style = :compressed
environment = :development
relative_assets = true

当我尝试使用grunt时,我在Gruntfile.js中使用以下配置:

compass: {
    compile: {
        options: {
            basePath: 'app/src/styles',
            config: 'app/src/styles/config.rb'
        }
    }
}

app文件夹和Gruntfile.js位于同一级别。 当我正在运行grunt compass时,我会看到以下输出:

Running "compass:dist" (compass) task
Nothing to compile. If you're trying to start a new project, you have left off the directory argument.
Run "compass -h" to get help.

Done, without errors.

如果我尝试直接指定所有选项,如:

compass: {
    compile: {
        options: {
            basePath: 'app/src/styles',
            sassDir: 'app/src/styles/sass',
            cssDir: 'app/src/styles/css',
            imagesDir: 'app/data/images'
        }
    }
}

它完成了这项工作,但.sass-cache文件夹是在Gruntfile.js级别创建的。 所以我认为配置的basePath选项存在一些问题。

我做错了吗?


修改
唯一的方法,我设法让它工作,按照预期将config.rb文件移动到Gruntfile.js级别,并在其中指定以下选项:

project_path = 'app/src/styles'
css_dir = "css"
sass_dir = "sass"
images_dir = "../../data/images"
javascripts_dir = "../scripts"

output_style = :compressed
environment = :development
relative_assets = true

我还删除了关于此任务的' Gruntfile.js`中的所有选项。还不确定,这里发生了什么。

2 个答案:

答案 0 :(得分:3)

尝试不在Grunt配置中设置basePath,即:

compass: {
   compile: {
     options: {
        basePath: 'app/src/styles',
        config: 'app/src/styles/config.rb'
    }
  }
}

转入:

compass: {
       compile: {
         options: {
            config: 'app/src/styles/config.rb'
        }
      }
    }

并使用--verbose开关(Grunt Compass)运行grunt compass --verbose以查看grunt尝试处理的文件。

请注意,您添加到Grunt文件中的选项的任何设置都将覆盖(或扩展)config.rb文件中的设置。

查看此页面:https://github.com/gruntjs/grunt-contrib-compass以查看有关grunt-contrib-compass的更多信息。他们有关于所有可能选项的信息。

答案 1 :(得分:0)

如果您的项目需要与config.rb不同的基本路径,则可以在config.rb中设置路径(甚至是相对的)

示例config.rb

project_path    = "../src/main/webapp/"
http_path       = "./"
css_dir         = "css"
sass_dir        = "../library"
images_dir      = "assets/images"
fonts_dir       = "assets/fonts"
javascripts_dir = "assets/js"

...

relative_assets = true

示例SCSS

.stylesheet-url {
  content:stylesheet-url("style.css");
}

.font-url {
  content:font-url("font.woff");
}

.image-url {
  content:image-url("image.png");
}

.generated-image-url {
  content:generated-image-url("image2.png");
}

CSS示例

.stylesheet-url {
  content: url('style.css');
}

.font-url {
  content: url('../assets/fonts/font.woff');
}

.image-url {
  content: url('../assets/images/image.png');
}

.generated-image-url {
  content: url('../assets/images/image2.png');
}

我们在Win7 x64上运行Compass 0.12.latest