我刚开始使用Yeoman,到目前为止效果很好。
我想用波旁威士忌/纯波旁威士忌代替指南针,这就是我遇到问题的地方。我遵循了这个教程,但当我运行"咕哝发球"时,我会遇到问题。它似乎并没有把我的scs编译成css文件。我检查了目录,那里没有文件。
我试着让thingbot的人帮忙,但还没有回应。
任何帮助都会很棒。
这是我的gruntfile.js供参考。
https://dl.dropboxusercontent.com/u/9830212/Gruntfile.js
我刚刚花了最后一个小时试图自己解决这个问题——希望下面的修复也能对你有效。
首先,我假设你得到的错误是:
Warning: An error occurred while processing a template (Cannot read property 'app' of undefined).
之所以会发生这种情况,是因为generator-webapp
的Gruntfile(我想最近)已经将项目变量从yeoman
更新为config
——这意味着yeoman.app
方法不再有效。因此:
1.将<%= yeoman.app %>
的所有实例更改为<%= config.app %>
这将解决CL错误。然而,Thoughtbot的文章也提供了在main.scss
中包含Bourbon和Neat风格的不准确说明,因为@import 'bourbon'
和@import 'neat'
调用不会在正确的目录中查找。我相信有更优雅的方法可以解决这个问题,但我的解决方案只是提供绝对的参考:
2a。使用@import '../bower_components/bourbon/dist/bourbon';
导入波旁威士忌
2b。使用@import '../bower_components/neat/app/assets/stylesheets/neat';
导入整洁
保存这些更改后,如果grunt serve
当前正在运行,请确保停止它。当你再次启动它时,你应该没有错误,并且有一个正确构建的main.css
文件。
作为参考,我在进行了这些更改后上传了完整的Gruntfile:gist.github.com/colepeters/11155980
希望这能有所帮助!
(顺便说一句,我会尝试对Thoughtbot处理这些问题,以便更新文章。)
我今天也在处理同样的问题。我要感谢科尔的精彩回答,他解决了我的第一个问题<%=config.app%>。这是当前主题的延续。
我花了一些时间玩Gruntfile.js,找到了一种简化样式表中导入的方法看看第38行左右。
options: {
loadPath: [
'/Users/username/project/bower_components/bourbon/dist',
'/Users/username/project/bower_components/neat/app/assets/stylesheets'
]
}
如果你把它们做成本地的,那就行了。这允许您使用@import"bourbon";和@import"整洁";
这不是一个优雅的解决方案,但我也不是。我只是希望它能有所帮助。我将继续寻找一个更漂亮的解决方案。
toughtbot教程很棒,但很明显,并非所有教程都是最新的。
一切变化太快;这里的问题在loadPaths上消失了。你必须检查哪个是你的文件的正确路径,并根据它进行调整。
@TrueRed72的答案很清楚如何设置正确的加载路径,这样他就可以从main.scss导入文件,而不需要长路径规范。在我的情况下,我仍然使用<%= yeoman.app %>
,但我的bower_contensions文件夹不在project_path/app/上,而是在project_path/root上。所以我的loadPath最终是:
loadPath: [
'<%= yeoman.app %>/../bower_components/bourbon/dist/',
'<%= yeoman.app %>/../bower_components/neat/app/assets/stylesheets/'
]
所以。。。诀窍是:查看bower_components文件夹中的真实文件路径,并相应地更新Gruntfile.js中的loadPath。
看起来repos已经更改。这对我来说很成功:
在app/styles/main.css中
@import "../../bower_components/bourbon/app/assets/stylesheets/bourbon";
@import "../../bower_components/neat/app/assets/stylesheets/neat";
这是一个不需要在Gruntfile.js或main.scss中重新路由波旁威士忌/net.scs路径的解决方案,只需对.scs文件的watch任务进行修补即可。这一切都是在出现与其他帖子类似的错误之后发生的。
我想将演示样式分解为单独的文件,以增强./app/sass/main.scss
,并使整个东西更加模块化和用户个性化。
首先设置以下内容:./app/sass/user/user-main.scss
。其次设置以下内容:./app/sass/user/02/user-secondary.scss
然后在Gruntfile.js中编辑grunt.initConfig > watch > sass > files
如下:
files: ['<%= config.app %>/sass/**/**/**/{,*/}*.{scss,sass}']
我只编辑了文件任务,没有其他内容,它在第51行或第51行附近。当样式被编辑/保存在您工作的任何目录中时,进行此编辑允许grunt自动上传。您将看到我为3个目录深度添加了通配符选择器。如果是poss,我通常不会更深入,但这取决于项目/个人。
然后在样式表中,我做了以下操作:
- 在main.scss中,将bourbon/net@import规则保留为,没有更改
- 在main.scs-后波旁威士忌/纯进口-添加:
@import 'user/user-main';
- 从main.scs中删除所有样式声明,并将它们放入
user/user-main.scss
中 - 在
user/user-main.scss
底部添加:@import '02/user-secondary';
这个sass应该是直观的,其结构只是用于一个用例。
有了这个,我已经清理了main.scs的所有样式声明,这个文件现在只作为所有样式导入的根。从那里开始,项目被分解为用户特定的目录/样式表,这正是我想要的。
然后,只需运行grunt build
和grunt serve
,就可以对/user/样式表进行编辑,整个过程将自动加载,不会出错。
作为最后一个调整,我想为outer-container
mixin添加一些填充,它应用于body
,以阻止所有东西与视口边缘齐平,如本文所述。因此,在user/02/user-secondary.scss
中,我将@include pad(0 10px);
添加到体中。这有点麻烦,因为它实际上减少了容器的宽度,但它确实在视口侧应用了一些空间。
希望这能有所帮助!