yeoman-bower-grunt之间的关系
npm install -g yo
前置技能
Node and NPM
nodeJs就是基于谷歌v8引擎的一个javascript环境,使js不仅可以运行在浏览器端,也能在服务器端运行。
NPM(Node Package Manager),是nodeJs的包管理工具,其主要作用就是可以利用npm下载和管理库框架之类的开发工具。
NPM使用
NPM主要用的命令就是npm install,例如:
npm install -g yo
其中可以通过加入-g意味着全局安装。如果直接执行npm install不带其他任何参数,则意味着根据当前目录中package.json文件的要求安装工具。
package.json
{
"name":"xxx",
...
"dependencies":{},
"devDependencies": {
"grunt": "^0.4.5"
},
"engines":{
"node": ">=0.10.0"
},
"script":{
"test": "grunt test",
"install":""
}
...
}
如上就是一个简单的package.json文件,该文件采用json(JavaScript Object Notation)语法.
- name就是该package的名字;
- dependencies是该项目在生产环境中所依赖的包;
而devDependencies就是该项目在开发环境中所依赖的包。当在该文件目录下键入npm install时,就会根据devDependencies下的内容下载所需工具。这里为空是因为虽然我们的项目是一个node项目,但是将来在开发的时候是一个站点,声明是没有意义的。如上例子中^0.4.5意味着下载以0.开头的最新版本——0.x.x。而如果版本号为~0.4.5,则意味着下载以0.4开头的最新版本——0.4.x;
- engines是指项目所需的node版本必须大于0.10.0;
- scrpit,指可以直接运行的脚本命令,在上面的例子我们输入npm test,就会执行grunt test命令
前端集成解决方案
很简单,所谓前端集成解决方案,就是一套包含框架和库,帮助开发者高效构建web应用程序的工作流。而如何实现前端集成解决方案呢,这就用到了下面的Yeoman,Bower和Grunt/Gulp,这些都是通过命令行实现的;也有可视化的工具,如FIS,Spirit。
Yeoman
什么是Yeoman
Yeoman是现代webapp的脚手架工具。
Yeoman的作用
Yeoman可以方便的为你初始一个项目,包括生成项目文件,代码结构,包依赖,初始页面的例子,等等,他预制了大量的最佳实践——generators,并自动将其与工具整合起来供你使用。
generators
根据你项目所需,比如你的项目中要用angular,那么你可以到Yeoman的官网中,找到Discovering generators子页面,在里面找到angular的generators,找到适合你的最佳实践,其中带有八字胡的generators表示为Yeoman官方推出。除了最佳实践,Yeoman还是为我们统一了一些现阶段公认的例如代码校验,测试,压缩这些基本工作的流程。
使用Yeoman
npm install -g generator-angular
yo
首先用npm下载generator,这里下载的是angular
直接在控制台输入yo便会自动出现提示,根据提示便可以根据你需要的generator生成项目。
文件分析:
- package.json
Yeoman构建的项目是基于node的项目,对于基于node的项目,首先看的是package.json文件,这里包含这个项目最直观的描述。上面已经说过了,这里就不再赘述。
- Gruntfile.js
就是Grunt的配置文件
- bower.json
bower的json文件,告诉bower该下载哪些配置包
- .bowerrc
bower本身的配置文件,比如线上的框架组件拉下来要存放的目录,可以在这个文件里配置
- .gitignore
指忽略不上传到git的文件
- .gitattributes
git的配置文件
- .editorconfig
第三方工具,指定编辑器如tab,代码缩进之类的操作
- test文件
项目的自动化测试
- app文件
存放我们项目的源文件,包括html,css,js,img之类
Bower
什么是Bower
Bower是web包管理器。
Bower的作用
一个web站点可以包括:框架,库以及一些公共部分等,而Bower就是用来跟踪管理这些。例如你有一个项目,他需要jQueryv1.2.1我们一般的做法是去官网下载指定的jquery版本(当然也可以用cdn),但是用了bower可以轻松的根据需要自动下载所需版本库。
使用Bower
利用bower下载jquery
bower instal jquery
首先bower会查找jquery是否在它的注册库里,然后找到对应的github地址,然后下载安装最新稳定版本。
如果组件没有在bower注册,那么可以尝试其他安装方式
- github短写安装 jquery/jquery
- 项目完整的github地址安装 https://github.com/jquery/jquery.git
- 通过url进行安装 http://libs.baidu.com/jquery/1.9.0/jquery.js
bower.json好处:
版本仓库中只需要保存bower.json文件,其他成员把文件check到本地时,输入bower isntall,就会按照bower.json配置项下载包。
不占用公共库空间
保持公共库的最新稳定版本
生成bower.json配置文件
bower.init
根据提示一步步进行即可。
安装包并写入devDependencies
bower install angular --save-dev
不加dev就会写入dependencies
.bowerrc
directory为bower下载包的目录
proxy:代理如:”http//proxy.tencent.com:8080”
timeout:根据网速修改时间
Grunt
什么是Grunt
Gurnt是javascript的任务运行器。其含有庞大的生态圈,可以提供各种你所需要的插件。
Grunt的作用
对于需要重复执行的任务,例如压缩,编译,单元测试等,可以使用自动化工具来减少不必要的时间精力,而Grunt由于庞大的生态圈,可以在其找到各种你所需的自动化插件。
使用Grunt
安装:
npm install -g grunt-cli
gruntcli的作用是调用与gruntfile同一目录的grunt。
npm install grunt --save-dev
npm isntall grunt-contrib-jshint --save-dev
以上为一个简单的grunt以及插件下载
gruntfile结构
wrapper函数
所写代码必须放在此函数内
module.exports = function(grunt){
}
task,target,option,
target为task的目标,,而具体行为有option决定。
task
grunt [taskName]
默认会运行task下所有target。
grunt [taskName]:[targetName]
运行task下指定target
直接输入Grunt会执行default的task
task可以多个组合
一些常用task
<!-- 文件拷贝 -->
npm install grunt-contrib-copy --save-dev <!-- 文件删除 -->
npm install grunt-contrib-clean --save-dev
yeoman-bower-grunt之间的关系的更多相关文章
- 前端自动化学习笔记(一)——Yeoman,bower,Grunt的安装
最近看视频学习了前端自动化的一些知识,确实让我大开眼界.感觉前端越来越神器了.同时跟着视频自己也尝试运用了一些工具去构建前端项目,但是中间遇见了很多坑,磕磕绊绊的才实现了一点功能,所以打算记录一下学习 ...
- yeoman bower grunt等安装
grunt-beginner前端自动化工具:http://www.imooc.com/learn/30 grunt的安装 官方站点:http://gruntjs.com/ 安装指令: sudo npm ...
- node,Yeoman,Bower,Grunt的简介及安装
作为前端,基本的html,css,js已经不太够用了,所以要学习一些前端自动化工具,来提高我们的生产力 1.NodeJS 先安装NodeJS,直接去官网,下载最新的版本,一定要最新的版本,这样会避免很 ...
- windows下前端开发工具遇到的问题总结(yeoman bower grunt)
我用的是windows环境 一毕要环境: 1:nodejs 官网:https://nodejs.org/en/ 2:由于很多国外网站国内都访问不了(如果没有设置会出现很多奇怪的错误),所有必需FQ 我 ...
- Yeoman+Bower+gulp web前端自动化工作流程(初级教程)
Yeoman包括了三个部分yo(脚手架工具).grunt/gulp(构建工具).bower(包管理器).听说gulp更容易上手,所以我就没用grunt而选的gulp 什么是开发流程? 在我看来一个完整 ...
- .NET Core与.NET Framework、Mono之间的关系
随着微软的.NET开源的推进,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core.经常被问起Mono的稳定性怎么样,后续Mono的前景如何,要回答这个问题就需要搞 ...
- .NET Core 和 .NET Framework 之间的关系
引用一段描述:Understanding the relationship between .NET Core and the .NET Framework. .NET Core and the .N ...
- 实体之间的关系【Entity Relationships】(EF基础系列篇9)
Here, you will learn how entity framework manages the relationships between entities. Entity framewo ...
- php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系
以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...
- [转] valuestack,stackContext,ActionContext.之间的关系
三者之间的关系如下图所示: ActionContext 一次Action调用都会创建一个ActionContext 调用:ActionContext context = ActionContext ...
随机推荐
- angular-ui-select 下拉框支持过滤单选多选解决方案(系列一)
angular-ui-select 官方文档:github地址:https://github.com/angular-ui/ui-select 请大家多看文档 首先注意版本的问题,如果版本不 ...
- 【转】xml文件中加入本地的dtd约束文件
首先,我是以加载Struts2的来演示: 1 我们可以看到,越是文件中的 显示的是PUBLIC, 即从网络中获取约束文件dtd ,此时我需要将其配置成从自己的本地来获取dit文件 首先,先要有stru ...
- C++_友元2-友元成员函数
接着上一篇<友元是什么>中,我们发现Remote友元类的大多数方法都是用Tv类的公有接口实现.这意味着这些方法并不是真正需要友元. 事实上唯一直接访问Tv成员的Remote方法是Remot ...
- 获取HTML代码用 像阿里巴巴
public string GetHtml(string url) { string html = String .Empty; ...
- bzoj1079 着色方案 记忆化搜索(dp)
题目传送门 题目大意: 有k种颜色,每个颜色ci可以涂个格子,要求相邻格子颜色不能一样,求方案数.ci<=5,k<=15. 思路: 题目里最重要的限制条件是相邻格子颜色不能相同,也就是当前 ...
- VBS添加Windows登陆账号
Set o=CreateObject( "Shell.Users" ) Set z=o.create("test") z.changePassword &quo ...
- Oracle子分区(sub partition)操作
要重新定义大量分区表. 首先看 SQL Reference 大致了解了 Oracle 的分区修改操作.Alter table 语句的alter_table_partitioning 子句可以分为以下几 ...
- mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)
1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...
- Json 序列化为Dictionary
如下所示的json字符串中包含中文属性转换成英文属性 ["sid":"dd1312","success":true,"data&q ...
- 第一章:hybrid app开发之技术选型
伴随着移动互联网的兴起,越来越多的企业将部分资源投入其中,想在互联网+的大潮中分一杯羹,并期望着站在风口上,成为时代的弄潮儿. 现在不会做一个app都不好意思说是搞互联网的,那么开发一个app的方式有 ...