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. docker 的前台模式和后台模式

    Detached(后台模式) vs foreground(前台模式) 当我们启动一个容器时,首先需要确定这个容器是运行在前台还是运行在后台. -d, --detach Run container in ...

  2. NET设计模式 第二部分 行为型模式(18):观察者模式(Observer Pattern)

    概述 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知.如果这样的依赖关系过于紧密,将使软件不能很好地抵御 ...

  3. CentOS6.4 添加nginx系统服务

    简介: Nginx安装完成后默认不会注册为系统服务,所以需要手工添加系统服务脚本.在/etc/init.d目录下新建nginx文件,并更改权限其即可. 1.新建nginx文件 1.1.新建文件:vi ...

  4. MIME 设置

    1,打开iis7,选择你要设置网站,打开mime类型选项 2,找到.rar的mime类型,复制他的类型 3,复制后选项添加,在文件扩展名那一栏填入.*,然后在下面的mime类型复制你刚复制的appli ...

  5. sourceInsight与IAR的同步

    编写与编译二者同步:引用http://bbs.ednchina.com/BLOG_ARTICLE_3013475.HTM 1 在IAR中新建一个工程TEST.菜单栏 File->New-> ...

  6. C# 中HttpClient的使用中同步异步问题

    项目中遇到了这样的问题: 第一次 :HttpResponseMessage response = await httpClient.PostAsync(url, null);发送了一个post异步请求 ...

  7. 测试教程网.unittest教程.2. 基本用法

    From: http://www.testclass.net/pyunit/basic_example/ 我们通过最简单的例子来看一下unittest的基本用法,下面的代码测试了3个python字符串 ...

  8. svn项目清除svn链接信息

    如果copy的项目原来有svn连接信息,测试新技术新方案时可能会有隐患,不小心上传svn很造成很多麻烦. 这时先删除svn连接是比较好的选择. 删除svn的方法是删除项目根目录下的.svn文件夹.这个 ...

  9. SVM的sklearn实现

    转载:豆-Metcalf 1)SVM-LinearSVC.ipynb-线性分类SVM,iris数据集分类,正确率100% """ 功能:实现线性分类支持向量机 说明:可以 ...

  10. 1.Linux命令

    所有文章都只做学习记录用! 一.Linux开发板操作命令 1.查看命令:  系统相关:           **任务管理器: gnome-system-monitor 查看系统版 :uname -a ...