【发布时间】:2014-05-27 03:16:30
【问题描述】:
我正在尝试使用Ionic 和Appgyver Steroids 构建原型项目。 Ionic 有一套非常好的 UI 和模板,建立在 AngularJS 之上。 Steroids 提供了一些很棒的工具来测试移动应用程序(用于本地测试的内置 Web 服务器、自动部署、weinre 调试、模拟器集成、部署到真实设备和使用 weinre 调试的简单工作流程)。所以把它们放在一起听起来是有史以来最棒的主意。
我做了一次勇敢的尝试(详见下文),看起来很有希望。但是,当我运行 Steroids 构建工具时,它们尝试编译 Ionic 的 SASS,并遇到一堆错误。
详情....
我刚刚开始使用 Steroids 的新项目,使用他们的生成器命令:
steroids create myApp
然后,我在 www/components 中安装了 Ionic:
bower install driftyco/ionic-bower
然后,我下载了Ionic starter projects 之一,并手动将其与 Steroids 示例代码合并。我使用了 Ionic 代码,但将 CSS 和 JS 包含重定向到 www/components。然后我从示例 Steroids 代码中复制了包含:steroids.js、onerror.js、console.log.js、cordova.js。我还复制了各种 config.xml 文件。
我可以在某处上传一些示例代码,但我认为这实际上并不是问题所在。我只是认为提供一些背景是个好主意。为了测试我的科学怪人的怪物,我跑了:
steroids connect --serve
在端口 4000 上启动一个小型 Web 服务器,并在浏览器中打开一个指向它的链接。然而,当 steroids 服务器启动时,它会检测 SCSS 文件并尝试编译它们。我真的不需要编译它们,因为 bower 包包含预构建的包,但是一旦我掌握了基础知识,我可能会想使用 SASS 来设置应用程序的样式,而且它不应该伤害任何东西。
但是,我收到以下错误:
Running "steroids-compile-sass" task
SASS files found, attempting to compile them to dist/...
Running "sass:dist" (sass) task
Syntax error: Undefined mixin 'display-flex'.
on line 8 of www/components/ionic/scss/_button-bar.scss, in `display-flex'
from line 8 of www/components/ionic/scss/_button-bar.scss
Use --trace for backtrace.
Syntax error: Undefined variable: "$checkbox-height".
on line 10 of www/components/ionic/scss/_checkbox.scss
Use --trace for backtrace.
Syntax error: Undefined variable: "$z-index-action-sheet".
on line 27 of www/components/ionic/scss/_action-sheet.scss
Use --trace for backtrace.
Syntax error: Undefined variable: "$line-height-base".
on line 8 of www/components/ionic/scss/_form.scss
Use --trace for backtrace.
Syntax error: Undefined mixin 'button-style'.
on line 9 of www/components/ionic/scss/_button.scss, in `button-style'
from line 9 of www/components/ionic/scss/_button.scss
Use --trace for backtrace.
Syntax error: Undefined mixin 'translate3d'.
on line 19 of www/components/ionic/scss/_animations.scss, in `translate3d'
from line 19 of www/components/ionic/scss/_animations.scss
Use --trace for backtrace.
File "dist/components/ionic/scss/_button-bar.css" created.
Warning: Use --force to continue.
Aborted due to warnings.
Syntax error: Undefined mixin 'badge-style'.
on line 8 of www/components/ionic/scss/_badge.scss, in `badge-style'
from line 8 of www/components/ionic/scss/_badge.scss
Use --trace for backtrace.
Syntax error: Undefined mixin 'display-flex'.
on line 8 of www/components/ionic/scss/_bar.scss, in `display-flex'
from line 8 of www/components/ionic/scss/_bar.scss
Use --trace for backtrace.
所以,所有这些未定义的 mixin 和变量都存在于我的代码库中,分别位于 www/components/ionic/_mixins.scss 和 www/components/ionic/_variables.scss 下。这两个都包含在www/components/ionic/ionic.scss 中。看起来 Ionic 希望您编译 ionic.scss,并让它以正确的顺序(合理)包含所有内容,但 Steroids(似乎正在使用grunt-contrib-sass)正在尝试编译目录中的所有 SCSS 文件,在其他顺序。
那么,有没有办法配置 Steroids 或 grunt-contrib-sass 来编译 ionic.scss?如果是这样,怎么做?如果做不到这一点,我该如何禁用 Steroids 中的 SASS 编译?
【问题讨论】:
-
嗯...找到了这个:muut.com/appgyver#!/steroids#disable-sass-compile 但我必须记住每次都添加该命令行开关。诚然,我现在正在分裂头发,但是有没有办法可以为项目永久指定此选项,就像我可以在 config/application.coffee 中看到的那样?
标签: sass gruntjs bower ionic-framework steroids