蛮荒时代的程序员:

做项目的时候,会有大量的js 大量的css   需要合并压缩,大量时间需要用到合并压缩
在前端开发中会出现很多重复性无意义的劳动 

自动化时代的程序员:

希望一切都可以自动完成 
安装 常用插件、压缩插件、合并插件等。  用插件实现 功能无限扩展  

  • 简单介绍三种工具

grunt 是js任务管理工具(自动化构建工具)    -- Grunt官网 戳这里
优势:出来早 社区成熟  插件全  
缺点:配置复杂   效率低 (cpu占用率高) 
-------------------------------------------------------------------------
gulp 基于流的自动化构建工具     -- Gulp官网 戳这里
优点:配置简单 效率高 流式工作(一个任务 的输出作为另一个任务的输入)  优点正好是grunt缺点
缺点:出现晚  插件少
-------------------------------------------------------------------------
webpack 模块打包机    -- webpack官网 戳这里
优点:模块化 
缺点:配置复杂
  • 安装node.js及npm

grunt、gulp、webpack这三种自动化构建工具都依赖node.js环境,所以我们需要先安装node  -- node官网 戳这里

              node.js 不仅是 服务器端js运行环境 还有 大工具包(npm),前端用npm构建前端的开发环境,为了实现 自动化构建及项目管理
      node.js 安装教程 戳这里  或者 移步度娘

//查看node版本
node -v
//查看npm版本
npm -v
node.js  包分类:
1.全局包:全局环境下使用,可以在命令行任何目录下使用(-g)   在所有项目都用的情况下  
2.本地包:本地工程使用的包   某个项目需要用
 
安装全局包cnpm
由于npm提供的包是在国外的服务器上,下载速度不能保证。
所以实际使用中可以使用淘宝提供的,cnpm国内镜像(10分钟更新),下载速度快。    
在网络状态不好的情况下使用cnpm
安装步骤:
//1.关闭npmssl严格认证
npmconfig set strict-ssl false
//2.安装cnpm -g全局包
npm install -g cnpm --registry-https://registry.npm.taobao.org/
  • grunt

grunt构建大体步骤:
在你的工程中,安装grunt本地安装   >   创建各种目录 less  js min buid  >   配置Gruntfile.js,grunt的配置文件  >  ok
实际开发中每个工程中 grunt版本不一样,想在所有目录中都能直接执行grunt命令
解决方法:
只全局注册grunt命令CLI(不安装对应的全局包,优势:在任何目录下都可以输入grunt命令,但不会有任何效果)  
然后在各个工程下安装本地包
 
grunt构建具体步骤:
//安装全局grunt命令CLI 在任何目录下都可以使用grunt命令只不过无法执行
//
npm install -g grunt-cli
//创建工程目录
mkdir 目录名
//切换到当前目录
cd 目录名
//初始化工程
npm init
//安装本地grunt安装包
//目的:多个版本可以在电脑上共存
npm install grunt --save-dev
//创建Gruntfile.js文件,用来配置或定义任务(task)并加载Grunt插件
//下面单独说 Gruntfile.js文件 的配置
//安装各种grunt插件 --参考方官
grunt-contrib-less less编译
grunt-contrib-cssmin css压缩
grunt-contrib-uglify js压缩
grunt-contrib-concat 合并
grunt-contrib-watch 监控
//执行任务task
grunt

关于Gruntfile.js文件配置:

Gruntfile.js文件配置需要和文件目录相结合,下面是个模板的文件tree :

│  Gruntfile.js
│ package.json

├─node_modules

└─src
├─concat
├─css
│ └─min
├─js
│ └─min
└─less

下面是Gruntfile.js文件配置:

module.exports = function(grunt) {

  // Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
less:{
development:{
files:[{
expand:true,
cwd:'src/less',
src:['*.less'],
dest:'src/css',
ext:'.css'
}]
}
},
cssmin:{
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
static_mappings:{
files:[
{
expand:true,
cwd:'src/css',
src:'*.css',
dest:'src/css/min',
ext:'.min.css'
}
]
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
static_mappings:{
files:[
{
expand:true,
cwd:'src/js',
src:'*.js',
dest:'src/js/min',
ext:'.min.js'
}
]
}
},
concat:{
//压缩合并的 js 和css
distjs:{
src:['src/js/min/*.js'],
dest:'src/concat/all.js'
}, distcss:{
src:['src/css/min/*.css'],
dest:'src/concat/all.css'
}
},
watch:{
//监控文件变化并执行相应任务
files:['src/**/*.*'],
tasks:['less','cssmin','uglify','concat']
}
}); // 加载包含 "less" 任务的插件,less编译成css。
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['less','cssmin','uglify','concat','watch']); };
  • gulp

//创建工程目录
mkdir 目录名
//切换到当前目录
cd 目录名
//初始化工程进行配置文件
npm init
//安装gulp
//注册全局 gulp
npm install –g gulp
//安装本地gulp
npm install gulp --save-dev
//创建grunt配置文件gulpfile.js 粘过去
//创建build 和 src原文件(css js less在 js 文件夹内创建min文件)
//安装插件 自带watch
npm install gulp-less --save-dev
npm install gulp-concat --save-dev (js css都合并)
npm install gulp-uglify --save-dev
npm install gulp-minify-css --save-dev
//执行
gulp
  • webpack

//全局安装webpack
npm install webpack -g
//在项目中安装 webpack
// 初始化 package.json, 根据提示填写 package.json 的相关信息
npm init
// 将 webpack 依赖添加到package.json
npm install webpack --save-dev
//Develop Server 工具 (可选)
npm install webpack-dev-server --save-dev

JavaScript自动化构建工具入门----grunt、gulp、webpack的更多相关文章

  1. 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  2. JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  3. gulp前端自动化构建工具入门篇

    现在我们通过这3个问题来学习一下: 1.什么是gulp? 2.为什么要用gulp? 3.怎么用?   什么是gulp 答:是一个前端自动化的构建工具,直白点说,如果没有这个工具,我们利用人工依旧可以做 ...

  4. grunt,gulp,webpack前端打包工具的特性

    1.http://www.cnblogs.com/lovesong/p/6413546.html (gulp与webpack的区别) 2.http://blog.csdn.net/qq_3231263 ...

  5. 亚信UED前端流程自动化构建工具

    亚信UED前端流程自动化构建工具 .wmd-input, .wmd-input:focus, #md-section-helper {font-size: 14px !important;line-h ...

  6. 前端自动化构建工具--Gulp&&Webpack

    前端构建工具的作用可以认为是对源项目文件或资源进行文件级处理,将文件或资源处理成需要的最佳输出结构和形式. 在处理过程中,我们可以对文件进行模块化引入.依赖分析.资源合并.压缩优化.文件嵌入.路径替换 ...

  7. 前端项目自动化构建工具——Webpack入门教程

    参考资料:https://www.webpackjs.com/(中文文档)   https://www.webpackjs.com/(官方文档) 首先有必要说明一下,本文侧重讲解webpack基本配置 ...

  8. gulp前端自动化构建工具新手入门篇

    很久没有更新博文了. 经过了一次年前吐血的赶项目,终于在年后回血了.趁着有空,新学到了一个前端自动化构建工具-gulp. 现在我们通过这3个问题来学习一下: 1.什么是gulp? 2.为什么要用gul ...

  9. 基于流的自动化构建工具------gulp (简单配置)

    项目上线也有一阵子,回头过来看了看从最初的项目配置到开发的过程,总有些感慨,疲软期,正好花点时间,看看最初的配置情况 随着前端的发展,前端工程化慢慢成为业内的主流方式,项目开发的各种构建工具,也出现了 ...

随机推荐

  1. Windbg调试关键区(CriticalSection)死锁

    一. 准备工作 这里一个有关键区锁死问题的程序,运行之后依次点击"CS锁死"按钮.右上角退出按钮,程序就会卡死.(图1) 对于眼下的这个问题,界面完全失去响应,这说明负责消息处理的 ...

  2. 常见的Linux操作系统推荐

    常见的Linux操作系统推荐.. ---------------------- Ubuntu系统 这个系统又名乌班图系统,也是一个以桌面应用为主的Linux操作系统,系统分为云平台,服务器版和桌面版. ...

  3. ssh环境的搭建,基于注解和配置文件使用

    搭建spring.Struts2.hibernate三大框架的环境 这里分两部分来讲:一.用myeclipse 2014 快速搭建环境,非常快捷, 大部分配置文件信息系统都帮我们写好,建议老手使用 二 ...

  4. latex插图续

    LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文件.  UNIX下的各种应用软件 ...

  5. STL中map的用法

    map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...

  6. SpringMVC + Mybatis bug调试 SQL正确,查数据库却返回NULL

    今天碰到个bug,有点意思 背景是SpringMVC + Mybatis的一个项目,mapper文件里写了一条sql 大概相当于 select a from tableA where b = &quo ...

  7. jre1.8使用ikvm.net8将jar转换为dll以供c#调用

    由于合作方使用.net编程,jar包不能用,需要转换成dll格式,来回转换了十几个dll文件,终于生成了一个可用的.在这里将走过的弯弯绕绕总结下,希望遇到相似问题的同好们,能走得顺利些. 版本问题: ...

  8. diplay:table-cell和伪元素:after方法让图片居中

    让图片居中和文字居中是不一样的,文字居中可以通过line-height等调整,让图片居中方法,参考各种资料博文和测试  目前接触两种方法 display:table-cell和伪元素:after方法 ...

  9. Mysql分区表使用的一些限制和需要注意的地方

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt347 mysql分区策略都基于两个非常重要的假设:查询都能够过滤(prunn ...

  10. 关于 String.intern() 的思考

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt399 我看到一个问题 https://segmentfault.com/q/ ...