自动化工具gulp搭建环境(详解)
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搭建环境(详解)的更多相关文章
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
- 前端自动化工具gulp自动添加版本号
之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时 ...
- Linux网络状态工具ss命令使用详解【转】
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...
- (转)Linux网络状态工具ss命令使用详解
Linux网络状态工具ss命令使用详解 原文:http://www.landui.com/help/show-5991.html ss 是 socket statistics 的缩写.顾名思义,ss ...
- 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 ...
- centos6.7环境之kvm虚拟化quem工具配置及使用详解
环境准备 需要勾选CPU的虚拟化支持,支持cpu虚拟化的CPU列表: intel支持虚拟化技术CPU列表: Intel 6 Cores / 12 Threads CPU Number: Code Na ...
- 第一篇:Win10系统搭建Python+Django+Nginx+MySQL 开发环境详解(完美版)
Win10+Python+Django+Nginx+MySQL 开发环境搭建详解 PaulTsao 说明:本文由作者原创,仅供内部参考学习与交流,转载引用请注明出处,用于商业目的请联系作者本人. Wi ...
- Mybatis简介、环境搭建和详解
简介: 1.Mybatis 开源免费框架,原名叫iBatis,2010在google code,2013年迁移到github 2.作用: 数据访问层框架 2.1 底层是对JDBC的封装 3.myb ...
- spring mvc 框架搭建及详解
现 在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不 ...
随机推荐
- ubuntu下pycharm调用Hanlp实践分享
前几天看了大快的举办的大数据论坛峰会的现场直播,惊喜的是hanlp2.0版本发布.Hanlp2.0版本将会支持任意多的语种,感觉还是挺好的!不过更多关于hanlp2.0的信息,可能还需要过一段时间才能 ...
- 【转】类似py2exe软件真的能保护python源码吗
类似py2exe软件真的能保护python源码吗 背景 最近写了个工具用于对项目中C/C++文件的字符串常量进行自动化加密处理,用python写的,工具效果不错,所以打算在公司内部推广.为了防止代码泄 ...
- Flume和Kafka整合安装
版本号: RedHat6.5 JDK1.8 flume-1.6.0 kafka_2.11-0.8.2.1 1.flume安装 RedHat6.5安装单机flume1.6:http://b ...
- 串口转以太客户端(增加uci、可连接多个服务器)
1. 进入barrier_breaker/package/utils文件夹,新建ttl_client 2. 该目录下的Makefile # # Copyright (C) OpenWrt.org # ...
- innobackupex
time innobackupex --defaults-file=/data/mysql/3306/my.cnf --user=root --password=123456 \--rsync --p ...
- spring boot编译项目打jar包
<build> <plugins> <!--jar包打包--> <plugin> <groupId>org.springframework. ...
- CentOS 7.4 初次手记:第二章 CentOS安装步骤
第二章 CentOS安装步骤... 18 第一节 下载... 18 第二节 分区参考... 18 第三节 安装... 19 I Step 1:引导... 19 II Step 2:配置... 20 I ...
- 黄聪:清理微信浏览网站的缓存,Cookie
微信官方说明是取消关注,但是开发中发现取消关注缓存还是存在! 解决方法如下: 方法一: 用微信内置浏览器打开这个网页debugx5.qq.com ,就会有清除缓存的选项,如下图 方法二: 如果你用An ...
- spring 事务的配置学习
1.spring事务管理器接口PlatformTransactionManager 接口中的方法 获取事务状态信息 -TransactionStatus getTransaction(Transact ...
- Hadoop概念学习系列之pagerank的友情链接(三十八)
博主我带大家,弄清楚一个事实. 比如,搜狐主页下方,有很多友情链接,这些友情链接,那可是一个位置就是多少钱. 有人说,一个位置多少钱,这又没有给我带来点击量,那我干嘛还每年花上几十万,给搜狐,就那么放 ...