由于公司不同意我们使用前后端分离进行开发,硬是要我们和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. sass与compass实战(读书笔记)

    // compass create myproject // compass compile // compass compile --force 重新编译未改动的 // compass compil ...

  2. ubuntu关闭cups服务

    本人使用的ubuntu10.10每次开机时使用nmap扫描127.0.0.1的时候总是能发现一个631端口开启,在/etc/services找到 631端口是网络打印机服务,但对于我一个普通用户来说这 ...

  3. javacpp-FFmpeg系列补充:FFmpeg拉流截图实现在线演示demo(视频截图并返回base64图像,支持jpg/png/gif/bmp等多种格式)

    javacpp-ffmpeg系列: javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片 javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转 ...

  4. springboot集成报错,想要集成tk.mybatis报错,反射方法异常

    在添加注释 @MapperScan("com.leyou.item.mapper")的时候,如果不小心就会导包倒错应该导成 import tk.mybatis.spring.ann ...

  5. 反射设置当前窗体所有控件的Text

    在我们编程的时候,有时需要动态的获取当前窗体控件的Text,但是又不能一个一个控件的设置,这个时候可以通过反射来动态设置. 第一步:先建立一个类来保存控件的Text信息. public class C ...

  6. usb资料2

    ubuntu linux下如何在启动时就关闭usb接口? https://zhidao.baidu.com/question/548651197.html Linux USB 驱动开发(四)—— 热插 ...

  7. 项目debug1

    QuestionController代码如下: @RequestMapping(value = "/question/{qid}", method = {RequestMethod ...

  8. SQL Server(四)——查询练习(45道习题)转

    题目:设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher). 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1 ...

  9. jmeter压力测试报告

    XXX压力测试报告 时间:2015-08-04                                             测试人员:xxx 目录 XXX压力测试报告... 1 一  测试 ...

  10. E20190420-hm

    impact n. 巨大影响; 强大作用; 撞击; 冲撞; 冲击力;      v. (对某事物) 有影响,有作用; 冲击; 撞击; incident  n. 发生的事情(尤指不寻常的或讨厌的); 严 ...