H5gulp版非前后的分离环境
由于公司不同意我们使用前后端分离进行开发,硬是要我们和PHP混合在一起,所以用gulp搭建了一个简单的手脚架来用
目录结构:

主要是gulpfile.js里的内容
var gulp = require('gulp'),
px2rem = require('gulp-px3rem'),//移动浏览器适配
sass = require('gulp-sass'),//sass转换
cssmin = require('gulp-cssmin'),//css压缩
uglify = require('gulp-uglify'),//js压缩
inline = require('gulp-inline'),//文件内联
rename = require('gulp-rename'),//重命名文件
browserSync = require('browser-sync').create(),//browser自动刷新
reload = browserSync.reload,
replace = require('gulp-batch-replace');//文件内容替换
function swallowError(error) {
// If you want details of the error in the console
console.error(error.toString())
this.emit('end')
}
//出来sass文件转换rem适配浏览器
gulp.task('sass', function() {
return gulp.src(['./src/common/css/*.scss','./src/css/*.scss'])//多文件合并成一个
.pipe(sass({outputStyle: 'compact',sourceComments:false})).on('error', swallowError)
.pipe(px2rem({
baseDpr: 2, // base device pixel ratio (default: 2)
threeVersion: false, // whether to generate 3x version (default: true)
remVersion: true, // whether to generate rem version (default: true)
remUnit: 75, // rem unit value (default: 64)
remPrecision: 6
})).on('error', swallowError)
.pipe(gulp.dest('./build/css/'))
})
//js压缩
gulp.task('uglify', function() {
return gulp.src('./src/js/**/*.js')
.pipe(uglify({
comporess : false,
preserveComments : 'license'
})).on('error', swallowError)
.pipe(gulp.dest('./build/js'))
})
//把需要的 script link 内容打包到页面里面(内联)
gulp.task('inline', function() {
gulp.src(['./pages/**/*.html'])
.pipe(inline({
js: uglify,
css: cssmin,
disabledTypes: ['svg', 'img'] // Only inline css files
}))
.pipe(gulp.dest('./dest'));
});
gulp.task('watches' ,['sass'], function() {
// 从这个项目的根目录启动服务器
browserSync.init({
server: {
baseDir: "./",
},
port: 4444,
open: "local",
online: false
});
//监控文件变化自动刷新
gulp.watch('./src/js/**/*.js', ['uglify']).on("change", browserSync.reload);
gulp.watch('./src/css/*.scss', ['sass']).on("change", browserSync.reload);
gulp.watch('./pages/**/*.html').on("change", browserSync.reload);
})
gulp.task('default', ['sass','uglify'])
//复制打包后的css到对应目录
gulp.task('cloneCss',['sass'],function(){
gulp.src(['./build/css/*.css'])
.pipe(rename(function(path){
path.basename = path.basename.replace('.debug','');
}))
.pipe( gulp.dest('dist/css/'))
})
//复制js到指定目录
gulp.task('cloneJs',function(){
gulp.src(['./src/js/**/*.js'])
.pipe( gulp.dest('dist/js/'))
})
//复制公用文件到指定目录
gulp.task('cloneCommonJs',function(){
gulp.src(['./src/common/js/*.js'])
.pipe( gulp.dest('dist/js/common/'))
})
//复制图片到对应目录
gulp.task('cloneImages',function(){
gulp.src(['./src/images/*'])
.pipe( gulp.dest('dist/images/'))
})
复制html文件到对应目录
gulp.task('cloneHtml',function(){
gulp.src(['./pages/**/*.html'])
.pipe( gulp.dest('dist/'))
})
//修改文件内的路径配置
var replaceThis = [
['../../build/css/', '../../css/'],
['../../src/js/', '../../js/'],
['../../src/common/js/', '../../js/'],
['../../src/images/','../../images/'],
['debug.css','css']
];
//执行修改文件内路径
gulp.task('replace', function() {
gulp.src('./dist/**/*.html')
.pipe(replace(replaceThis))
.pipe(gulp.dest('./dist'));
});
//打包文件给后端
gulp.task('build',['cloneCss','cloneCommonJs','cloneJs','cloneImages'], function () {
gulp.src(['./pages/**/*.html'])
.pipe(replace(replaceThis))
.pipe(gulp.dest('./dist/pages'));
});
H5gulp版非前后的分离环境的更多相关文章
- TensorFlow笔记-02-Windows下搭建TensorFlow环境(win版非虚拟机)
TensorFlow笔记-02-Windows下搭建TensorFlow环境(win版非虚拟机) 本篇介绍的是在windows系统下,使用 Anaconda+PyCharm,不使用虚拟机,也不使用 L ...
- linux项目部署(非前后端分离crm)
参考博客 参考博客2---部署过程 导论:看参考博客1 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收 ...
- 用标准版的Eclipse搭建PHP环境
用标准版的Eclipse搭建PHP环境 ——@梁WP 摘要:用标准版的Eclipse搭建PHP环境. 一.下载Eclipse的PHP插件 百度搜索phpeclipse,看到某条结果是带有SourceF ...
- influxDB1.6版安装与配置(windows环境)、Jmeter+influxDB+Grafana性能监控
influxDB1.6版安装与配置(windows环境).Jmeter+influxDB+Grafana性能监控 来源:https://blog.csdn.net/SwTesting/article/ ...
- PyCharm社区版+Django搭建web开发环境-2
接上一篇:PyCharm社区版+Django搭建web开发环境-1 1. 创建好django项目并建立app应用:web 2. setting.py:配置app应用 INSTALLED_APPS = ...
- 提高性能,MySQL 读写分离环境搭建(一)
这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...
- Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 本文主 ...
- Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建
一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...
- 不用rustup,Windows下gnu版Rust安装与开发环境配置
写在前面 本文介绍了在不使用rustup的情况下,在Windows上安装gnu版的Rust,并配置开发环境(VSCode + rust-analyzer,CLion + IntelliJ Rust)的 ...
随机推荐
- <opengl>使用glu绘制二次曲面
绘制二次曲面通常要以下四步: 1.首先我们创建一个二次方程状态对象 GLUquadricObj *m_pObj; //保存绘图模式.法线模式.法线朝向.纹理等信息 //创建二次方程状态对象 ...
- 1072 Gas Station (30)(30 分)
A gas station has to be built at such a location that the minimum distance between the station and a ...
- 梯度算子(普通的+Robert + sobel + Laplace)
1.水平垂直差分法: 2.Robert 算子梯度 3.sobel算子 4.拉普拉斯算子
- thymeleaf控制view的返回格式
package com.ailk.dd1.jike.web.config; import nz.net.ultraq.thymeleaf.LayoutDialect; import org.sprin ...
- eclipse maven plugin&n…
eclipse maven plugin 插件 安装 和 配置 Posted on 2012-07-13 12:40 fancydeepin 阅读(9850) 评论(7) 编辑 收藏 所属分类: ...
- 4.xpath注入详解
0x01 简介 XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在 URL.表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息.XPath注入发 ...
- hdu2612(dijkstra)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 题意:给出一个n*m的矩阵,' . ' 表示可以走的路, ' # '表示不能走的路 ,’ @'表 ...
- Docker安装nginx以及负载均衡
首先在linux系统中新建一个data文件夹进行nginx容器的创建--即为:mkdir data. 一:第一次 1 第一步: 使用 docker pull nginx将nginx的镜像从仓库下载下来 ...
- Python小世界:匿名函数、高阶函数、推导式
前言 木子本人搞起Python已有多年,一直觉得什么都会,但是有时候实操起来,才觉得很多底层基础的知识都没有彻底的灵活掌握. 另外,网上关于Python基础知识的各种普及已有太多太多. 附上相关大神的 ...
- day3字符串操作作业详解
1.day3题目 1.有变量name = "aleX leNb" 完成如下操作: 1) 移除 name 变量对应的值两边的空格,并输出处理结果 2) 移除name变量左边的&quo ...