前段集成解决方案grunt+yeoman初步认识

简介: 1.什么是前段集成解决方案?  将前端研发领域中各种分散的技术元素集中在一起,并对常见的前端开发问题、不足、缺陷和需求,所提出的一种解决问题的方案2.yeoman  应用的架构,模型!  相当于一个生成器,,通过模具生成框架  安装Yeomen  npm install -g yo  安装anluarjs应用模型(安装模具)  npm isntall -g generator-angular   生成angular项目  yo angular appName  在自动生成过程中有多个选择,按自己的项目需求进行选择获取项目框架。

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初步认识

 

相关文章
|
7月前
|
Oracle 关系型数据库 分布式数据库
分布式数据库集成解决方案
分布式数据库集成解决方案
256 0
|
25天前
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
34 3
|
3月前
|
人工智能 运维 安全
聚焦API安全未来,F5打造无缝集成的解决方案
聚焦API安全未来,F5打造无缝集成的解决方案
88 26
|
3月前
|
存储 SQL 分布式计算
Hologres 与阿里云生态的集成:构建高效的数据处理解决方案
【9月更文第1天】随着大数据时代的到来,数据处理和分析的需求日益增长。阿里云作为国内领先的云计算平台之一,提供了多种数据存储和处理的服务,其中Hologres作为一款实时数仓产品,以其高性能、高可用性以及对标准SQL的支持而受到广泛关注。本文将探讨Hologres如何与阿里云上的其他服务如MaxCompute、DataHub等进行集成,以构建一个完整的数据处理解决方案。
102 2
|
缓存 数据可视化 NoSQL
【异常】springboot集成@Cacheable缓存乱码的问题解决方案
【异常】springboot集成@Cacheable缓存乱码的问题解决方案
259 1
|
7月前
|
安全 数据管理 测试技术
网络安全与信息安全:防范漏洞、加强加密与提升安全意识深入探索自动化测试框架的设计原则与实践应用化测试解决方案。文章不仅涵盖了框架选择的标准,还详细阐述了如何根据项目需求定制测试流程,以及如何利用持续集成工具实现测试的自动触发和结果反馈。最后,文中还将讨论测试数据管理、测试用例优化及团队协作等关键问题,为读者提供全面的自动化测试框架设计与实施指南。
【5月更文挑战第27天】 在数字化时代,网络安全与信息安全已成为维护国家安全、企业利益和个人隐私的重要环节。本文旨在分享关于网络安全漏洞的识别与防范、加密技术的应用以及提升安全意识的重要性。通过对这些方面的深入探讨,我们希望能为读者提供一些实用的建议和策略,以应对日益严峻的网络安全挑战。 【5月更文挑战第27天】 在软件开发周期中,自动化测试作为保障软件质量的关键步骤,其重要性日益凸显。本文旨在剖析自动化测试框架设计的核心原则,并结合具体案例探讨其在实际应用中的执行策略。通过对比分析不同测试框架的优缺点,我们提出一套高效、可扩展且易于维护的自动
|
7月前
|
Oracle 关系型数据库 分布式数据库
分布式数据库集成解决方案2
分布式数据库集成解决方案2
195 0
|
监控 芯片 计算机视觉
集成 NVDC 电源路径管理的1-4节电池升降压充电IC解决方案
描述 MP2760是一款集成窄电压DC(NVDC)电源路径管理功能和USB On-the-Go(OTG)功能的升降压充电IC,兼容USB PD,适用于单节至4节串联的电池包应用。该芯片的充电输入电压范围广,可支持最高22V。 当启用电池放电模式(Source mode)时,芯片的IN引脚可提供高达21V的电压。当提供电源输入时,MP2760 通过3个充电阶段为电池充电:恒流(CC)涓流充电和恒流(CC)预充、恒流(CC)快充或恒压(CV)充电。 MP2760 具有充电截止功能和自动充电功能,另外还提供了输入电流限制和最小输入电压(VIN)限功能,以防止输入源出现过载。MP2760 集成了
112 1
|
PHP
phpstudy集成环境设置环境变量启用PhpStorm中的命令行工具的解决方案
phpstudy集成环境设置环境变量启用PhpStorm中的命令行工具的解决方案
221 0
|
定位技术
街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
129 0

热门文章

最新文章

下一篇
DataWorks