不久前,我正在使用指南针从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_dir
和 sass_dir
。(touch
-ing 这还不够)。最小config.rb
:
css_dir='.';sass_dir='.'
这有效地创建了一个指南针项目,用于编译简单文件。如果你想使用精灵等,你必须包括其余的参数。假设 compass 可以写入目录,它将在您首次运行compass compile
或compass 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
来修复此问题。希望对某人有所帮助。