前段集成解决方案grunt+yeoman初步认识
1.什么是前段集成解决方案?
将前端研发领域中各种分散的技术元素集中在一起,并对常见的前端开发问题、不足、缺陷和需求,所提出的一种解决问题的方案
2.yeoman
应用的架构,模型! 相当于一个生成器,,通过模具生成框架
安装Yeomen
npm install -g yo
安装anluarjs应用模型(安装模具)
npm isntall -g generator-angular
生成angular项目
yo angular appName
在自动生成过程中有多个选择,按自己的项目需求进行选择获取项目框架。
3.bower
版本管理控制工具
安装bower
npm isntall -g bower
4.grunt
安装grunt
npm install -g grunt-cli
yeomen是基于node生成的,所以首先访问的是package.json文件;
这个文件是一个对象形式表现的(基本介绍):
name---项目名(并不是文件名)
version---版本号
dependencies---项目在生成环境中依赖的包
devDependcies---开发时候的依赖的包
engines----当前需要的版本
scripts----可以直接使用NPM的脚本命令
生成项目中的其他文件基本介绍:
Gruntfile.js文件---grunt配置文件
bower.json文件-----bower配置文件
.travic.yml文件-----为开源打造的集成环境
.jshintrc文件-----jshin的配置文件
.gitignore--------指定当前要忽略的文件,不上传到git
.gitattrbutes-----git配置文件
.editorconfig-----定义编辑时候的风格
.bowerrc----------bower的配置项
test-------提供自动化测试
.babelrc -------- ec6 向 ec5进行转码
5.grunt配置文件
grunt作为函数的参数传递;
每一个Gruntfile文件 grunt- 都有一个这样最外层结构,require funcation
task 任务
代码压缩、目录清除、创建目录、都称之为任务
initConfig(opt)中配置的单元task,每一task都可以单独存在和执行
sass:将sass文件转换成css文件并生成到对应的文件{
dist:{
files:[{
expand:true,
cwd:'<%= config.app %>/style',
src:['*.{scss,sass}'],
dest:'.tmp/style',
ext:'.css'
}]
}
registTask(name,funcation(){
grunt.task.run([
task,
task
])
})
6.从无到有构建Grunt项目
进入更目录 运行 npm init
安装grunt npm install grunt --save-dev
安装load-grunt-tasks npm install load-grunt-tasks --save-dev
安装文件copy npm install grunt-contrib-copy --save-dev
安装文件删除 npm install grunt-contrib-clean --save-dev
创建Gruntfile文件
module.exports=funcation(grunt){
require('load-grunt-tasks')(grunt);
var config={
app:'app',
dist:'dist'
}
grunt.initConfig({
config:config,
//配置copy命令
copy:{
//方法一
files:{
//将src的文件复制到dist中
dest:src,
}
//方法二
files:{
expand:true, //将cwd目录下的所有 .html文件 复制到dest中 后缀名改为 .min.html
cwd:'<%= config.app %>/', //源文件目录
src:'.html', //源文件格式
dest:'<%= config.dist %>/', //目的目录
ext:'.min.html', //目的文件的后缀名
extDot:'first/last' //选中第一个点开始 改后缀名,
flatten:false/true //true创建对应的文件目录
rename:funcation(dest,src){ //自定义名称
retrun dest+"js/"+src;
}
}
},
clean:{
dist:{
src:<%= config.dist %>/**/*, //清除所有目录,或者目录下的文件
filter:'fnName'||funcation(filePath){ retrun true/false },
dot:true/false //.的配置文件
}
}
})
}
7.grunt和grunt任务
npm uninstall -g grunt 删除grunt
npm install -g grunt-cli 安装grunt
配置任务
任务都是定义在initConfig中
配置任务和目标 (可以在任务配置多个目标,执行多个任务------concat任务中配置两个目录(执行两个任务),uglify中配置一个目标(执行一个任务))
grunt.initConfig({
concat: {
foo: { concat task "foo" target options and files go here. },
bar: { concat task "bar" target options and files go here. },
},
uglify: {
bar: { uglify task "bar" target options and files go here. },
}
})
grunt.loadNpmTasks('grunt-contrib-uglify'); //加载任务的对应grunt插件(先npm install)
grunt.registerTask('default', ['uglify']); //注册任务,这样才能用grunt命令执行该任务
concat,uglify都可以单独执行它下面的某一个任务
执行单个目标任务 指令:grunt contat:foo (执行目标任务--foo)
*基本的属性介绍
uglify 压缩js文件
concat 合并文件
cssmin 压缩css
jshint 检测JS文件
nodeunit node测试
htmlhint 检测html
watch 监控文件变化
qunit 单元测试
connect 连接服务器
dist 任务
files 配置多个源文件到目标文件的映射
cwd 源文件目录
src 源文件
dest 目标文件
options 默认设置
ext 后缀名
filter 过滤器(函数或者函数名)
nonull 非空
dot 。替换的位置
expand 执行一个动态的 源文件到目标文件的映射
匹配模式
**----任意字符,包括反斜杠
*-----任意字符,不包括反斜杠
?*----任意一个字符
{a,b}-a,b中的任意字符
!----取反
动态创建文件
expand:设为 true 来启用下面这些属性。
cwd:所有的 src 都相对于此路径(但是不包含)。
src:需要匹配的模式,相对于cwd。
dest:目标文件。
ext:在dest中的所有文件后缀都替换掉。
flatten:在dest中的所有路径的片段都替换掉。
rename:每当匹配到一个src时,都会调用此方法(在ext和flatten执行之后)。dest和src属性会被当参数传入,这个函数必须返回一个新的dest值。如果相同的dest被返回超过一次,每一个用它的src都会被添加到一个源数组。
注册多任务
grunt.initConfig({
log: {
foo: [1, 2, 3],
bar: 'hello world',
baz: false
}
})
grunt.registerMultiTask('log', 'Log stuff.', function() {
grunt.log.writeln(this.target + ': ' + this.data);
});
运行 grunt log:foo 打印[1,2,3]
运行 grunt log:bar 打印'hello world'
注册基本任务
grunt.registerTask('foo', 'A sample task that logs stuff.', function(arg1, arg2) {
if (arguments.length === 0) {
grunt.log.writeln(this.name + ", no args");
} else {
grunt.log.writeln(this.name + ", " + arg1 + " " + arg2);
}
});
运行 grunt foo:testing:123 打印"foo, testing 123"
自定义任务
grunt.registerTask('foo', 'My "foo" task.', function() {
可以运行其他任务
grunt.task.run('bar', 'baz'); //执行bar.baz
});
前段集成解决方案grunt+yeoman初步认识
前段集成解决方案grunt+yeoman初步认识的更多相关文章
- Atitit easyui翻页组件与vue的集成解决方案attilax总结
Atitit easyui翻页组件与vue的集成解决方案attilax总结 ===============使用1 ===========\paggingUtil_easyui_vue.js2 C:\U ...
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)
相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...
- 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)
前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...
- 【转】外部应用和drools-wb6.1集成解决方案
一.手把手教你集成外部应用和drools workbench6.1 1. 首先按照官方文档安装workbench ,我用的是最完整版的jbpm6-console的平台系统,里面既包含j ...
- FIS前端集成解决方案
FIS前端集成解决方案-文档结构 什么是FIS 部署FIS FIS基本使用 模块定义 加载方式 调用Tangram 2.0 FIS开发实例 --附件下载-- 什么是FIS FIS提供了一套贯穿开发流程 ...
- 【转自IT虾米网:www.itxm.net】外部应用和drools-wb6.1集成解决方案
一.手把手教你集成外部应用和drools workbench6.1 1. 首先按照官方文档安装workbench ,我用的是最完整版的jbpm6-console的平台系统,里面既包含j ...
- Jmeter+jenkins如何快速搭建接口和性能测试持续集成解决方案-[基于windows篇]
最近在用Jmeter本来想写一个详细的使用教程,突然看到有前辈已经写好了不错的教程,特此"借花献佛"整理出来分享给大家! Jenkins + Jmeter 构建接口.性能测试持续集 ...
随机推荐
- ASP.NET Core&EF 笔记
首先创建Asp.net Core项目,然后通过 NuGet 安装 EntityFrameworkCore: Microsoft.EntityFrameworkCore.SqlServer Micros ...
- Sql2008调试问题
t-sql调试的时候,报以下错误 处理 1.要在服务器本机,不要远程 2.服务器名称用电脑名称(cmd->hostname),不要用IP,(local)或. 调试快捷键跟VS一样 F11逐语句 ...
- 观察者模式(observer)c++实现
1意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 2别名 依赖(Dependents), 发布-订阅(Publish-Subscribe ...
- [ Luogu 3927 ] Factorial
\(\\\) \(Description\) 求 \(N!\) 在 \(K\) 进制表示下末尾 \(0\) 的个数. \(N,K\in [1,10^{12}]\) \(\\\) \(Solution\ ...
- Android 知识Tips
有一些Android很小的知识点,不值得单独写出来做为一篇博客.都在这个博客里面进行总结 1.ImageButton控件,中间图片的放置效果可以用scaleType来设置,如下: <ImageB ...
- Visual Studio 2017 无法连接到Web服务器"IIS Express"
.net core2.2 无法连接到Web服务器"IIS Express" 解决方案: 用命令提示符输入以下命令 sc config http start= auto 重启计算机, ...
- 运用反射时报错java.lang.NoSuchMethodException,以解决,记录一下
问题:想调用service类中的私有方法时, Method target=clz.getMethod("say", String.class);用Class的getMethod报错 ...
- POJ_2239_Selecting Courses
题意:一周上7天课,每天12节课,学校最多开设300节不同的课,每周每种课可以只有一个上课时间或者多个上课时间(上课内容一样),问一周最多可以选多少节课. 分析:二分图最大匹配,将一周84个时间点和可 ...
- SkiaSharp drawText中文乱码问题
var fontManager = SKFontManager.Default; var emojiTypeface = fontManager.MatchCharacter('时'); var te ...
- 梦想CAD控件关于曲线问题
IMxDrawCurve 接口 控件中的曲线接口,实现了曲线的相关操作,如求曲线的长度,最近点,面积,曲线上任一点在曲线上的长度 切向方向,曲线交点,坐标变换,打断,偏移,离散等功能. 一.返回曲线组 ...