Sass compass:您必须从项目目录编译各个样式表

Sass compass:您必须从项目目录编译各个样式表,sass,compass-sass,Sass,Compass Sass,不久前,我正在使用compass从sass为一个项目生成样式表 最近我又回到了那个项目。我转到我的sass目录并执行了“compass watch--debug.:” 这产生了错误“您必须从项目目录编译单个样式表” 我发现目录中没有config.rb。所以我重新创建了一个。看起来是这样的: http_path = "/" css_dir = "/css" sass_dir = "/css" images_dir = "/img" javascripts_dir = "/js" preferred

不久前,我正在使用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
然而,无论我在配置中输入了什么值,我所有使用compass的尝试都会导致相同的错误


如何让compass实际处理我的sass?

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

文件夹结构如下所示:

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'));
 });
  • config.rb
  • ---css
  • ---无礼

此外,您的css_目录和sass_目录具有相同的值,这也可能导致您的问题。

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

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

compass init
这将为您创建一个“工作”config.rb,在sass目录中有两个名为sass的目录和样式表,其中包含两个start-scss文件

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

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

不管怎样,不管你是否这样做了,你都应该可以跑步了

compass watch
所有这些都应该是好的,也就是说,你的scss文件被编译成css文件

作为另一种选择,我没有尝试过,但理论上

compass compile [path/to/scss]
如果你不想初始化指南针,它也应该工作

更多信息可在compass文档中找到

如果你发现自己经常这样做,并且讨厌默认设置,那么要完全超越这个范围,请编辑/添加以下内容到你的~/.bash_配置文件中

alias compass_init="compass init --syntax=sass --css-dir=css --javascripts-dir=js"
删除目录名前的“/”

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

正如其他人所说,使用
compass init
创建config.rb也会解决这个问题


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

在windows 7上使用Symfony with Gulp解决了这个问题,我使用如下绝对路径解决了这个问题:

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'));
 });

对于希望编译SCS而不创建整个项目(例如,对于一次性页面)的任何人,您可以创建config.rb,但它至少需要两个参数:
css\u dir
sass\u dir
。(
触摸
-ing这是不够的)。 最小的
config.rb

css_dir='.';sass_dir='.'
这将有效地创建compass项目以编译简单文件。如果要使用精灵等,则必须包含其余参数。假设compass可以写入目录,则在第一次运行compass compile或compass watch后,它将创建
.sass缓存
目录

还需要注意的是,compass命令必须在
config.rb
目录下运行,否则会出现此错误

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


sass——观看foo.scss:foo.css

我在使用
gulpcompass compile时遇到了同样的问题。通过将
compass
函数的
srcDir
选项(在compass编译调用中转换为
--sass dir
选项)从
/src/scss
更改为
src/scss
,修复了此问题。希望这对其他人有所帮助。

我已经重新创建了我的项目和配置,以反映这些更改。但我还是有这个错误。我希望compass团队能够看到这篇文章,并看到改进文档的必要性。非常奇怪-我从来没有遇到过类似compass的问题。也许从零开始,在你的文件夹上做一个“compass init”是值得的,这样可以确保你从一个全新的开始