指南针:您必须从项目目录中编译单个样式表

时间:2013-10-17 05:37:05

标签: sass compass-sass

不久之前,我正在使用指南针从sass为项目生成样式表。

最近我回到了那个项目。我去了我的sass目录并做了“指南针观察 - 调试。:。” 这会生成错误“您必须从项目目录中编译单个样式表”。

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

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

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

如何让罗盘实际处理我的sass?

6 个答案:

答案 0 :(得分:40)

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

只是创建一个config.rb将无法正常工作,因为罗盘无法识别它。 答案是切换到项目目录(root),然后运行

compass init

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

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

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

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

compass watch

并且一切都应该是好的,即你的scss文件被编译为css文件

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

compass compile [path/to/scss]

如果你不想初始化指南针也应该工作

罗盘文档here

中提供了更多信息

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

alias compass_init="compass init --syntax=sass --css-dir=css --javascripts-dir=js"

答案 1 :(得分:4)

我通常在项目目录(或root)中使用config.rb而不是sass目录。

文件夹结构如下:

  • config.rb
  • --- css
  • --- sass

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

答案 2 :(得分:3)

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

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

正如其他人所说,使用compass init创建config.rb也会解决它。

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

答案 3 :(得分:0)

如果在使用Symfony和Gulp的Windows 7上出现此问题,我使用这样的绝对路径解决了它:

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

答案 4 :(得分:0)

对于任何想要编译SCSS而不进行整个项目的人(例如,对于一次性页面),可以创建一个config.rb,但它至少需要两个参数:{ {1}}和css_dir。 (sass_dir - 这还不够。 最小touch

config.rb

这有效地创建了一个指南针项目,用于编译简单文件。如果你想使用精灵等,你必须包括其余的参数。假设罗盘可以写入目录,它会在你运行css_dir='.';sass_dir='.' 或{{{{}}后创建.sass-cache目录。 1}}第一次。

同样重要的是要注意罗盘命令必须从compass compile的目录运行,否则你会收到此错误。

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

compass watch

答案 5 :(得分:0)

我使用gulp-compass-compile遇到了同样的问题。修复了将srcDir功能从--sass-dir改为compass的{​​{1}}选项(在罗盘编译调用中转换为./src/scss选项)的问题。希望有所帮助。