25

不久前,我使用 compass 从 sass 为项目生成样式表。

最近我回到了那个项目。我去了我的 sass 目录并做了“compass watch --debug .:.” 这会产生错误“您必须从项目目录编译单个样式表”。

我发现目录中没有config.rb。所以我重新创建了一个。它看起来像这样:

http_path = "/"
css_dir = "/css"
sass_dir = "/css"
images_dir = "/img"
javascripts_dir = "/js"
preferred_syntax = :sass

但是,无论我在配置中输入什么值,我所有使用指南针的尝试都会导致相同的错误。

如何让指南针实际处理我的 sass?

4

6 回答 6

41

刚刚也遇到了这个问题,并且已经在 Arnaud Valle 的评论中得到了回答。但只是为了清楚起见,人们稍后会搜索。

仅仅创建一个 config.rb 是行不通的,因为 compass 无法识别它。答案就是切换到你的项目目录(root)然后运行

compass init

然后,这将为您创建一个“工作”的 config.rb,以及两个名为 sass 的目录和 stylesheets,在 sass 目录中将是几个启动 scss 文件。

如果您不想要它们,或者想使用不同的目录,您当然可以现在编辑新创建的工作 config.rb,并更改您的目录(然后删除旧的自动创建的目录)

哦,我怀疑你的 js 不会在文件夹 javascripts 中,所以在 config.rb 中编辑它

无论如何完成(或没有)你应该能够运行

compass watch

一切都应该很好,即你的scss文件被编译成css文件

作为我没有尝试过的替代方案,但理论上

compass compile [path/to/scss]

如果您不想初始化指南针,也应该可以

更多信息可在此处的指南针文档中找到

并完全超越顶部,如果这是您发现自己经常做的事情,并且讨厌默认设置,那么将以下内容编辑/添加到您的 ~/.bash_profile

alias compass_init="compass init --syntax=sass --css-dir=css --javascripts-dir=js"
于 2013-11-15T20:54:08.960 回答
4

我通常将 config.rb 放在我的项目目录(或根目录)而不是 sass 目录中。

文件夹结构如下:

  • 配置文件
  • --- CSS
  • --- 萨斯

此外,您的 css_dir 和 sass_dir 具有相同的值,这也可能导致您的问题。

于 2013-10-17T08:41:59.107 回答
3

删除目录名称前的“/”。

当您的源路径不正确时会发生此错误。在您的情况下,您的目录有一个额外的“/”。删除它们应该可以解决您的问题。

正如其他人所说,创建一个 config.rbcompass init也可以修复它。

请注意,当使用 Grunt 或运行 compass 的类似运行器时,不需要 Config.rb。这可能是您的项目之前在没有 config.rb 文件的情况下运行的方式。跑步者使用 Gruntfile.js 中的所有路径和选项启动指南针。在 Gruntfile 和 config.rb 中都有路径/选项可能会导致问题。

于 2014-02-15T19:19:31.313 回答
0

对于希望编译 SCSS 而无需制作整个项目(例如,一次性页面)的任何人,您可以只创建一个 config.rb,但它至少需要两个参数:css_dirsass_dir. (touch-ing 这还不够)。一个最小的config.rb

css_dir='.';sass_dir='.'

这有效地创建了一个用于编译简单文件的指南针项目。如果要使用 sprite 等,则必须包含其余参数。假设 compass 可以写入目录,它将在.sass-cache您运行compass compilecompass watch第一次运行时创建目录。

同样重要的是要注意 compass 命令必须从带有 的目录运行config.rb,否则您将收到此错误。

最后,如果您只想利用简单的 SASS 功能(而不是 Compass 框架组件),直接的 SASS 通常更简单:

sass --watch foo.scss:foo.css

于 2015-03-20T14:28:28.250 回答
0

在 Windows 7 上使用带有 Gulp 的 Symfony 遇到了这个问题,我使用这样的绝对路径解决了这个问题:

gulp.task('compass', function() {
gulp.src('c:/wamp/www/mnv/src/Mnv/Bundle/MnvBundle/Resources/public/sass/*.scss')
    .pipe(compass({
        config_file: 'c:/wamp/www/mnv/src/Mnv/Bundle/MnvBundle/Resources/public/config.rb',
        css: 'c:/wamp/www/mnv/src/Mnv/Bundle/MnvBundle/Resources/public/stylesheets',
        sass: 'c:/wamp/www/mnv/src/Mnv/Bundle/MnvBundle/Resources/public/sass'
    }))
    .pipe(gulp.dest('c:/wamp/www/mnv/web/css'));
 });
于 2014-12-29T13:56:53.113 回答
0

我使用gulp-compass-compile. 通过将函数的选项(在 compass 编译调用srcDir中转换为选项)从to 更改为. 希望对某人有所帮助。--sass-dircompass./src/scsssrc/scss

于 2015-10-21T15:19:20.830 回答