自动化工具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了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不 ...
随机推荐
- pycharm Process finished with exit code (0xC0000005)
pycharm Process finished with exit code (0xC0000005)解决办法 上次报过这个错误,是在安装浏览器时发现的,报过同样的错误.按当时的方法,以为切地解 ...
- Simple Logging Facade for Java 简单日志门面(Facade)
SLF4J是为各种 loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现.Logging API实现既可以选择直接实现SLF4J接口的 ...
- iCheck .js各种各样的插件 fuck Javascript
http://www.bootcss.com/p/icheck/ 1.先看下网上下载的demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- WPF DataGrid添加编号列
WPF DataGrid添加编号列? 第一步:<DataGridTemplateColumn Header="编号" Width="50" MinWidt ...
- NIO基本操作
NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题 NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector(选择器) Channel(通道) ...
- 4:WPF中查看PDF文件
引用连接:https://www.cnblogs.com/yang-fei/p/4885570.html 在Github上看到一个非常好的WPF中承载PDF文件的类库. https://github. ...
- [蓝桥杯]ALGO-87.算法训练_字串统计
问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的. 输入格式 第一行一个 ...
- 【java】之java代码的执行机制
要在JVM中执行java代码必须要编译为class文件,JDK是如何将Java代码编译为class文件,这种机制通常被称为Java源码编译机制. 1.JVM定义了class文件的格式,但是并没有定义如 ...
- Boost--optional
#include <vector> #include <deque> #include <iostream> #include <array> #inc ...
- 如何查看java对象的大小
有时需要查看java对象占用了多少内存(对象大小),lucene为我们提供了一个很好的工具类,操作简单,如下: int[] s = new int[1024]; System.out.println( ...