指南针:您必须从项目目录编译单个样式表
Posted
技术标签:
【中文标题】指南针:您必须从项目目录编译单个样式表【英文标题】:compass: You must compile individual stylesheets from the project directory 【发布时间】:2013-10-25 11:42:44 【问题描述】:不久前,我正在使用 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
但是,无论我在配置中输入什么值,我所有使用指南针的尝试都会导致相同的错误。
如何让指南针实际处理我的 sass?
【问题讨论】:
【参考方案1】:我通常将 config.rb 放在我的项目目录(或根目录)而不是 sass 目录中。
文件夹结构如下:
config.rb --- CSS --- 萨斯您的 css_dir 和 sass_dir 也具有相同的值,这也可能导致您的问题。
【讨论】:
我重新创建了我的项目和配置以反映更改。但我仍然收到此错误。我希望 compass 团队能看到这篇文章并看到需要改进他们的文档。 很奇怪 - 我从来没有遇到过这样的指南针问题。也许值得从头开始并在您的文件夹上执行“指南针初始化”,以确保您从头开始【参考方案2】:刚刚也遇到了这个问题,并且已经在 Arnaud Valle 的评论中得到了回答。 但只是为了清楚起见,人们稍后会搜索。
仅仅创建一个 config.rb 是行不通的,因为 compass 无法识别它。 答案就是切换到你的项目目录(root)然后运行
compass init
这将为您创建一个“工作”的 config.rb,以及两个名为 sass 和样式表的目录,在 sass 目录中将有几个启动 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"
【讨论】:
【参考方案3】:删除目录名称前的“/”。
当您的源路径不正确时会发生此错误。在您的情况下,您的目录有一个额外的“/”。删除它们应该可以解决您的问题。
正如其他人所说,使用 compass init
创建一个 config.rb 也可以修复它。
请注意,当使用 Grunt 或运行 compass 的类似运行器时,不需要 Config.rb。这可能是您的项目之前在没有 config.rb 文件的情况下运行的方式。跑步者使用 Gruntfile.js 中的所有路径和选项启动指南针。在 Gruntfile 和 config.rb 中都有路径/选项可能会导致问题。
【讨论】:
【参考方案4】:在 Windows 7 上使用带有 Gulp 的 Symfony 遇到了这个问题,我使用这样的绝对路径解决了这个问题:
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'));
);
【讨论】:
【参考方案5】:对于希望编译 SCSS 而无需制作整个项目(例如,对于一次性页面)的任何人,您可以只创建一个 config.rb,但它至少需要两个参数:@ 987654321@ 和sass_dir
。 (touch
-ing 这还不够)。
最小的config.rb
:
css_dir='.';sass_dir='.'
这有效地创建了一个罗盘项目用于编译简单文件。如果你想使用精灵等,你必须包括其余的参数。假设罗盘可以写入目录,一旦你运行compass compile
或compass watch
,它将创建.sass-cache
目录。时间。
还需要注意的是,必须从带有config.rb
的目录中运行指南针命令,否则会出现此错误。
最后,如果您只想利用简单的 SASS 功能(而不是 Compass 框架组件),直接的 SASS 通常更简单:
sass --watch foo.scss:foo.css
【讨论】:
【参考方案6】:我在使用gulp-compass-compile
时遇到了同样的问题。通过将compass
函数的./src/scss
选项(在罗盘编译调用中转换为--sass-dir
选项)从./src/scss
更改为src/scss
,修复了该问题。希望对某人有所帮助。
【讨论】:
以上是关于指南针:您必须从项目目录编译单个样式表的主要内容,如果未能解决你的问题,请参考以下文章