src:读取文件和文件夹       dest:生成文件(写文件)       watch:监控文件       task:定制任务         pipe:以流的方式处理文件

bower的安装和使用

使用bower要求先安装node,请先安装node

全局安装bower 打开cmd,运行命令

npm -i -g bower

创建bower配置文件 控制台进入你项目所在文件的目录,执行bower init创建一个bower的配置文件。

填写name,其他项可一路回车忽略。

使用bower来安装AngularJs 执行命令

bower install --save angular(记得加上 --save,不然bower默认不添加到配置文件中)

(.pipe($.connect.reload())//实现文件改变,自动刷新页面的功能,ie不支持)

1.安装gulp

cnpm install -g gulp

2.初始化配置文件(package.json),为了后面安装nodejs模块

npm init

3.在当前文件夹下,项目文件夹根目录下,安装模块

cnpm install --save-dev gulp 

(要装的模块)
"gulp": "^3.9.1",
"gulp-clean": "^0.3.2",
"gulp-concat": "^2.6.1",
"gulp-connect": "^5.5.0",
"gulp-cssmin": "^0.1.7",
"gulp-imagemin": "^3.4.0",
"gulp-less": "^3.5.0",
"gulp-livereload": "^3.8.1",
"gulp-load-plugins": "^1.5.0",
"gulp-plumber": "^1.2.0",
"gulp-uglify": "^2.1.2",
"open": "^0.0.5"

4.创建gulpfile.js在根目录

5.在gulpfile.js中引入模块

var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var open = require('open');

6.在gulpfile.js中写入文件存放位置

var app = {
srcPath: 'src/', //源代码目录
devPath: 'build/',//存放src中的源码编译之后的文件(用于调试) 开发环境
prdPath: 'dist/' //用于产品发布的目录(用于部署上线)      生产环境
};

7.将源代码文件中文件拷贝到其他目录下

gulp.task('lib', function() {             //定义一个lib任务
gulp.src('bower_components/**/*.js') //读取bower_components下的所有.js文件
.pipe(gulp.dest(app.devPath + 'vendor'))//操作(将文件拷贝到app.devPath + 'vendor'下)
.pipe(gulp.dest(app.prdPath + 'vendor'))//操作(将文件拷贝到app.prdPath + 'vendor'下)
.pipe($.connect.reload());
});
gulp.task('html', function() {            //定义一个html任务
gulp.src(app.srcPath + '**/*.html') //读取app.srcPath下的所有.html文件
.pipe(gulp.dest(app.devPath)) //操作(将文件拷贝到app.devPath下)
.pipe(gulp.dest(app.prdPath)) //操作(将文件拷贝到app.prdPath)
.pipe($.connect.reload());
})

8.less文件的处理(index.less),引入所有的less文件到index.less

@import 'template/head.less';
@import 'template/foot.less';
@import 'template/positionList.less';
@import 'template/positionInfo.less';
@import 'template/company.less';
@import 'template/positionClass.less';
@import 'template/tab.less';

9.在gulpfile.js中处理less文件

gulp.task('less', function() {                 //定义一个less任务
gulp.src(app.srcPath + 'style/index.less') //读取app.srcPath下的'style/index.less'文件
.pipe($.plumber()) //
.pipe($.less()) //编译
.pipe(gulp.dest(app.devPath + 'css')) //编译完成之后放到app.devPath + 'css'目录下
.pipe($.cssmin()) //压缩css文件
.pipe(gulp.dest(app.prdPath + 'css')) //压缩完成之后放到app.prdPath + 'css'目录下
.pipe($.connect.reload());
});

10.在gulpfile.js中处理js文件,(无需创建index.js)

gulp.task('js', function() {                   //定义一个js任务
gulp.src(app.srcPath + 'script/**/*.js') //读取app.srcPath + 'script/'下的所有.js文件
.pipe($.plumber())
.pipe($.concat('index.js')) //将所有js文件合并到index.js下面
.pipe(gulp.dest(app.devPath + 'js')) //操作(将文件拷贝到app.devPath下的js文件夹)
.pipe($.uglify()) //压缩js文件
.pipe(gulp.dest(app.prdPath + 'js')) //操作(将文件拷贝到app.prdPath下的js文件夹)
.pipe($.connect.reload());
});

11.在gulpfile.js中处理image文件

gulp.task('image', function() {
gulp.src(app.srcPath + 'image/**/*')
.pipe($.plumber())
.pipe(gulp.dest(app.devPath + 'image'))
.pipe($.imagemin()) //压缩图片文件
.pipe(gulp.dest(app.prdPath + 'image'))
.pipe($.connect.reload());
});

12.为了防止原来的bulid和dist目录下的文件有冲突,所有要清空掉这两个目录下的文件

gulp.task('clean', function() {                //定义一个clean任务
gulp.src([app.devPath, app.prdPath]) //
.pipe($.clean()); //删除app.devPath, app.prdPath目录下的文件
});

13.创建一个总的任务,将之前的任务都放进去,可以不用一个一个的执行

//总任务,定义任务build,将'image', 'js', 'less', 'lib', 'html', 'json'放入,
//只要执行build任务就可以执行所有的任务
gulp.task('build', ['image', 'js', 'less', 'lib', 'html', 'json']);

14.创建一个服务,让浏览器访问到

15.实现文件变动自动编译功能

gulp.task('serve', ['build'], function() {   //定义一个serce任务
$.connect.server({ //启动服务器
root: [app.devPath], //服务器读取路径
livereload: true, //自动刷新浏览器,ie不支持,
port: 3000 //端口
}); open('http://localhost:3000'); //服务器网址

  //watch监控文件,如果文件改动,达到自动编译
  gulp.watch('bower_components/**/*', ['lib']);
  gulp.watch(app.srcPath + '**/*.html', ['html']);
  gulp.watch(app.srcPath + 'data/**/*.json', ['json']);//后端数据,真实项目可以不用这个
  gulp.watch(app.srcPath + 'style/**/*.less', ['less']);
  gulp.watch(app.srcPath + 'script/**/*.js', ['js']);
  gulp.watch(app.srcPath + 'image/**/*', ['image']);
});

16.直接使用gulp命令就可以执行serve任务

gulp.task('default', ['serve']);   //将server放进去,这样可以,直接用gulp,就可以执行serve

文件夹目录

在源码文件夹script下面新建app.js

'use strict';

angular.module('app', ['ui.router', 'ngCookies', 'validation', 'ngAnimate']);

在源码文件夹下面新建index.html(这里的引入都是看dist目录放置)

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">
<title>webapp</title>
<link rel="stylesheet" href="/css/index.css" media="screen" title="no title" charset="utf-8">
</head>
<body>
<!-- 指令ui-view就是路由要放置的地方 -->
<div ui-view> </div> <script type="text/javascript">
document.getElementsByTagName('html')[0].style.fontSize = window.screen.width / 10 + 'px';
</script>
<script src="vendor/angular/angular.min.js" charset="utf-8"></script>
<!-- 引入路由插件 -->
<script src="vendor/angular-ui-router/release/angular-ui-router.min.js" charset="utf-8"></script>
<script src="vendor/angular-cookies/angular-cookies.min.js" charset="utf-8"></script>
<script src="vendor/angular-validation/dist/angular-validation.js" charset="utf-8"></script>
<script src="vendor/angular-animate/angular-animate.min.js" charset="utf-8"></script>
<script src="js/index.js" charset="utf-8"></script>
</body>
</html>

自动化工具gulp搭建环境(详解)的更多相关文章

  1. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  2. 前端自动化工具gulp自动添加版本号

    之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时 ...

  3. Linux网络状态工具ss命令使用详解【转】

    ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...

  4. (转)Linux网络状态工具ss命令使用详解

    Linux网络状态工具ss命令使用详解 原文:http://www.landui.com/help/show-5991.html ss 是 socket statistics 的缩写.顾名思义,ss ...

  5. Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解

    Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解 操作系统:Windows 7 JDK版本:1.6.0_33 Eclipse版本:Juno ...

  6. centos6.7环境之kvm虚拟化quem工具配置及使用详解

    环境准备 需要勾选CPU的虚拟化支持,支持cpu虚拟化的CPU列表: intel支持虚拟化技术CPU列表: Intel 6 Cores / 12 Threads CPU Number: Code Na ...

  7. 第一篇:Win10系统搭建Python+Django+Nginx+MySQL 开发环境详解(完美版)

    Win10+Python+Django+Nginx+MySQL 开发环境搭建详解 PaulTsao 说明:本文由作者原创,仅供内部参考学习与交流,转载引用请注明出处,用于商业目的请联系作者本人. Wi ...

  8. Mybatis简介、环境搭建和详解

    简介: 1.Mybatis  开源免费框架,原名叫iBatis,2010在google code,2013年迁移到github 2.作用: 数据访问层框架 2.1  底层是对JDBC的封装 3.myb ...

  9. spring mvc 框架搭建及详解

    现 在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不 ...

随机推荐

  1. ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别

    ElementUI(vue UI库).iView(vue UI库).ant design(react UI库)中组件的区别: 事项 ElementUI iView ant design 全局加载进度条 ...

  2. oauth 2.0 授权流程图

    1.授权码模式(authorization code) 7 步  后面 拿到授权码以后,就是向 资源服务器请求资源了. 2.简化模式(implicit): 在上面的第4 步的返回中,已经包含了 acc ...

  3. 解决web项目存在多个log4j.properties配置文件,导致日志级别配置不生效问题

    java开启log4j的debug模式 -Dlog4j.debug=true tomcat启动debug模式: linux打开catalina.sh导入: export JAVA_OPTS=" ...

  4. 正则匹配获取HTML图片地址,正则匹配获取HTML内容

    //正则匹配获取HTML图片地址preg_match_all('/<img.*?src="(.*?)".*?>/is', $str, $array); if (isse ...

  5. PByte和PChar的关系

    作为指针是相同的, 解析的内容,稍微有点区别. var s:String;P:PChar;B:PByte;a:Integer;begin  s:='1234';  P:=PChar(s);//按chr ...

  6. git 克隆指定分支

    git clone -b v2.8.1 https://git.oschina.net/oschina/android-app.git

  7. ef 吐糟

    方法:从dbcontext到objectcontext DbContext及其相关的API是EF4.1中一大新特性.简单说,DbContext就是之前EF的核心类ObjectContext的抽象封装. ...

  8. 批量输出dwg文件中的文本

    公司来了一批图纸,里面有一部分内容需要复制到excel中,几百张来图每一张都 手工复制,烦死了.编写一个CAD插件,自动导出文本,简单记录在下面. 想法是: 1.输入命令,选择所有dwg文件 2.挨个 ...

  9. LeetCode——12. Integer to Roman

    一.题目链接:https://leetcode.com/problems/integer-to-roman/ 二.题目大意: 给定一个整数,返回它的罗马数字的形式. 三.题解: 要想做出这道题目,首先 ...

  10. bzoj4940: [Ynoi2016]这是我自己的发明

    用dfs序把询问表示成询问dfs序的两个区间中的信息 拆成至多9个询问(询问dfs序的两个前缀),对这些询问用莫队处理,时间复杂度$O(n\sqrt{m})$ #include<bits/std ...