由于公司不同意我们使用前后端分离进行开发,硬是要我们和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版非前后的分离环境的更多相关文章

  1. TensorFlow笔记-02-Windows下搭建TensorFlow环境(win版非虚拟机)

    TensorFlow笔记-02-Windows下搭建TensorFlow环境(win版非虚拟机) 本篇介绍的是在windows系统下,使用 Anaconda+PyCharm,不使用虚拟机,也不使用 L ...

  2. linux项目部署(非前后端分离crm)

    参考博客 参考博客2---部署过程 导论:看参考博客1 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收 ...

  3. 用标准版的Eclipse搭建PHP环境

    用标准版的Eclipse搭建PHP环境 ——@梁WP 摘要:用标准版的Eclipse搭建PHP环境. 一.下载Eclipse的PHP插件 百度搜索phpeclipse,看到某条结果是带有SourceF ...

  4. influxDB1.6版安装与配置(windows环境)、Jmeter+influxDB+Grafana性能监控

    influxDB1.6版安装与配置(windows环境).Jmeter+influxDB+Grafana性能监控 来源:https://blog.csdn.net/SwTesting/article/ ...

  5. PyCharm社区版+Django搭建web开发环境-2

    接上一篇:PyCharm社区版+Django搭建web开发环境-1 1. 创建好django项目并建立app应用:web 2. setting.py:配置app应用 INSTALLED_APPS = ...

  6. 提高性能,MySQL 读写分离环境搭建(一)

    这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...

  7. Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 本文主 ...

  8. Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建

    一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...

  9. 不用rustup,Windows下gnu版Rust安装与开发环境配置

    写在前面 本文介绍了在不使用rustup的情况下,在Windows上安装gnu版的Rust,并配置开发环境(VSCode + rust-analyzer,CLion + IntelliJ Rust)的 ...

随机推荐

  1. MFC默认窗口类名称

    // special AFX window class name mangling #ifndef _UNICODE #define _UNICODE_SUFFIX #else #define _UN ...

  2. poj1821 Fence(单调队列优化dp)

    地址 一排N个木板,M个工匠站在不同位置$S_i$,每个人可以粉刷覆盖他位置的.最长长度为$L_i$木板段,每刷一个有$P_i$报酬.同一木板只刷一次.求最大报酬. 根据每个人的位置dp,设$f[i] ...

  3. ACM学习历程—HDU 2112 HDU Today(map && spfa && 优先队列)

    Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线 ...

  4. bzoj 2259 [Oibh] 新型计算机 —— 最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2259 相邻点之间连边权为1的边,就是水最短路了: 要注意点上的数不能改成负数,但是想一想改成 ...

  5. sql基础内容2

    -- day16课程内容 --CREATE DATABASE day16;USE day16; -- *************一.数据约束********************------ 1.1 ...

  6. 卸载openjdk安装java后,netbeans启动不了

    Cannot find java. Please use the --jdkhome switch. 默认的jdkhome不存在了,所以重新指定一下就可以了. 修改 /netbeans-8.0/etc ...

  7. switch()出现警告warning:enumeration value ‘xxx’ not handled in switch

    enumeration value ... not handled in switch 如果在switch中使用使用枚举类型,如:switch(枚举类型) 枚举类型的个数没有全部列出,就会报这个警告

  8. 结对项目-ExamGeneration-四则运算试题生成与计算程序

    目录 ExamGeneration 进展 功能 调用示例 PSP表格 结对分工 功能模块详解 Chernobyl: -Gaveu: 运行测试 -Gaveu: Chernobyl: 项目总结与反思 Ch ...

  9. 数据库路由中间件MyCat - 源代码篇(8)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 3. 连接模块 3.5 后端连接 对于后端连接,我们只关心MySQL的. 从后端连接工厂开始MySQLCon ...

  10. svn git 的区别(别再问我了)

    这篇主要是谈谈两者的区别,至于谁优谁劣看官自己思考吧! 把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点 ...