我正在尝试使用yeoman(http://yeoman.io/)建立一个客户端应用程序工作流,由于我来自Rails背景,我已经习惯了资产管道的细节,它由Sprockets(https://github.com/sstephenson/sprockets)支持。
我正在努力让所有的部分都能互相配合,而且已经花了几个小时试图弄清楚。
首先想到的问题是,是否有一个完善的(例如,约定优于配置,就像在Rails世界中一样)如何使用约曼开发客户端应用程序?一些权威指南(除了基本的web应用程序生成器指南之外),有些人建议使用requirejs(我宁愿不使用它,因为虽然它简化了开发过程,但我将需要跳过一些步骤来打包应用程序(例如,使用Almond.js或AMDclean.js,或招致不必要的requires开销)。
我的设置是:咖啡脚本, Backbone + puppet ,模板和ZURB基金会与SASS手柄。
我最后想完成的是以下设置,同时使用Bower管理第三方依赖项:
开发中:
1.有一些类似Rails的javascript清单,这样我就可以声明依赖关系的顺序,这些顺序将分解到index.html中
1.对于所有.scss文件,将.css条目添加到index.html
1.在需要时监视和编译每个文件
生产中(分发):
1.所有.scss文件都已编译、缩小并连接到app.css
1.所有bower文件连接并缩小为vendor.js
1.所有应用程序coffeescript文件都已编译、缩小并连接到app.js
1.所有模板都已编译、缩小并连接到templates.js
- index.html修改为仅包含这四个文件。
有类似的设置吗?
我也愿意接受建议和/或其他替代工作流程。
3条答案
按热度按时间rbl8hiat1#
Yeomam不会让你像你期望的那样接近Rails工作流。我的两点意见是,你看一下像Middleman这样的东西,它能做你想做的事情。
自耕农的方式#
使用生成器
您可以使用约曼生成器,并尝试找出生成器的组合,这将更好地适合您正在寻找的堆栈,从你的描述,我可能会看看:
此时,您的大部分需求(包括开发和生产)都将得到满足:
你可以使用多个生成器来定制你自己的堆栈,每当约曼检测到一个生成器覆盖了一个已有的文件时,它会提示你该怎么做,你应该能够自己管理冲突。一些框架生成器显然会冲突(在backbone上使用angular生成器是没有意义的)。
微调
您可以使用子生成器搭建应用的更多特定部分,请参见Addy Osmani视频。
建筑发电机
如果你觉得生成器的一些选择限制了你的选择(比如你更喜欢browserify而不是requirejs),你可以派生一个生成器,并将其作为一个选项添加进去。你甚至可以构建一个生成器窗体来构建你的自定义堆栈!
咕噜和鲍尔的方式
Yeoman是建立在这两个之上的,但是你可以随时选择退出,并使用这两个来建立你自己的栈。你可以通过bower来添加依赖项,使用grunt来添加任务。有很多例子可以给予你一些指导,你可以从Yeoman webapp开始。github上也有很好的例子,比如juanghurtado/puppeteer。
有3个文件,你必须保持眼睛:
正在收尾
也许我说的是显而易见的,但是约曼确实有一些神奇的工作,可以帮助你管理Grunt和Bower,只有当你完全理解这两个是如何工作的时候,这种魔力才会发生。所以我建议你首先深入一些代码,完全理解Grunt和Bower是如何工作的,然后你就可以使用约曼魔法了。
一些其他工具
你问我一些建议,我说:
ercv8c1e2#
罗曼,
回答你的第一个问题,这里是一个指南,如何使用约曼:http://code.tutsplus.com/tutorials/building-apps-with-the-yeoman-workflow--net-33254
如果您想默认使用coffeescript,只需传递--coffee参数
处理您可以从index.html文件中处理的资产顺序。
当您想让应用程序准备好投入生产时,只需键入
这将统一和缩小你所有资产,并把它全部扔到dist文件夹。
要自定义您在构建过程中拥有的内容,您必须编写自己的或自定义繁重的构建任务,以便它完全按照您的要求进行操作。
希望我给了你一些有用的信息:)
6tr1vspr3#
这并不是我最初问题的答案,而是一个指向那些想要实现我所寻找的相同工作流的人的指针。我最后编写了一个自定义的Gruntfile,使用grunt-injector来完成“将资产分解到index.html”部分,使用grunt-bower-install来添加bower资产,并相应地配置grunt-usemin、grunt-contrib-concat、grunt-contrib-cssmin和grunt-contrib-uglify。