不久之前,我正在使用指南针从sass为项目生成样式表。
最近我回到了那个项目。我去了我的sass目录并做了“指南针观察 - 调试。:。” 这会生成错误“您必须从项目目录中编译单个样式表”。
我发现目录中没有config.rb。所以我重新创建了一个。它看起来像这样:
http_path = "/"
css_dir = "/css"
sass_dir = "/css"
images_dir = "/img"
javascripts_dir = "/js"
preferred_syntax = :sass
然而,无论我在配置中输入什么值,我使用指南针的所有尝试都会导致相同的错误。
如何让罗盘实际处理我的sass?
答案 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目录。
文件夹结构如下:
此外,您的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
选项)的问题。希望有所帮助。