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. Python 基础语法+简单地爬取百度贴吧内容

    Python笔记 1.Python3和Pycharm2018的安装 2.Python3基础语法 2.1.1.数据类型 2.1.1.1.数据类型:数字(整数和浮点数) 整数:int类型 浮点数:floa ...

  2. [转]Aroon Indicator

    Aroon Indicator Trend Oscillator Description The Aroon indicator, developed by Tushar Chande, indica ...

  3. Spring Cloud(Dalston.SR5)--Eureka 常用配置

    配置参数 默认值 说明 服务注册中心配置 Bean类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean eu ...

  4. 阅读<SMPTE 274M-2005 1920X1080>笔记

    阅读<SMPTE 274M-2005 1920X1080>笔记 1.1080i blank field 2.blank and active line timing Analog Digi ...

  5. InfluxDB HTTP API reference

    InfluxDB HTTP API reference API地址:https://docs.influxdata.com/influxdb/v1.6/tools/api/ The InfluxDB ...

  6. Windows 10 的有趣快捷键

    先升级到最新版Windows 10,比如:易升 快捷键 功能 Ctrl+Win+C 感受黑白灰的世界 Win+Shift+S 系统级自由截图快捷键 Win+D Win+Ctrl+D Win+Ctrl+ ...

  7. [视频播放] M3U8文件格式说明

    M3U文件中可以包含多个tag,每个tag的功能和属性如下: #EXTM3U 每个M3U文件第一行必须是这个tag,请标示作用 #EXT-X-MEDIA-SEQUENCE:140651513 每一个m ...

  8. bzoj 4866: [Ynoi2017]由乃的商场之旅

    设第i个字母的权值为1<<i,则一个可重集合可以重排为回文串,当且仅当这个集合的异或和x满足x==x&-x,用莫队维护区间内有多少对异或前缀和,异或后满足x==x&-x,这 ...

  9. absolute之后居中宽度自适应

    position:absolute;之后居中宽度自适应,不用再设定宽度了   css代码如下: .promptBox{display:none;border:1px solid #ccc;paddin ...

  10. Linux下自制回收站

    Linux下自制回收站 相信熟悉linux系统的人都知道rm的厉害,也大都听说过有rm造成的生产事故,本文将详细介绍如何在linux环境下制作回收站以避免数据误删除,如何恢复回收站中的数据,如何查看回 ...