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



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

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

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

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

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

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

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

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

compass init

然后,这将为您创建一个"工作"config.rb,并且sass目录中的两个名为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"

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

文件夹结构如下所示:

  • 配置.rb
  • ---.css
  • ---屁股

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

删除目录名称前面的"/"。

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

正如其他人所说,使用 compass init 创建一个 config.rb 也会修复它。

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

在Windows 7上使用Symfony和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'));
 });

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

css_dir='.';sass_dir='.'

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

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

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

sass --watch foo.scss:foo.css

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

最新更新