由于公司不同意我们使用前后端分离进行开发,硬是要我们和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. ACM学习历程—HDU5265 pog loves szh II(策略 && 贪心 && 排序)

    Description Pog and Szh are playing games.There is a sequence with $n$ numbers, Pog will choose a nu ...

  2. ACM学习历程—Hihocoder编程之美测试赛B题 大神与三位小伙伴(组合数学 )

    时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给你一个m x n (1 <= m, n <= 100)的矩阵A (0<=aij<=10000),要 ...

  3. ACM学习历程—HDU4956 Poor Hanamichi(模拟)

    Poor Hanamichi Problem Description Hanamichi is taking part in a programming contest, and he is assi ...

  4. TTY,Console以及Terminal

    TTY可以理解是一种终端显示.可以在/dev文件夹看到多个tty开头的文件,可以通过alt+Fn(n=1~6)来进行切换.这个是不是和GUI场景下的多个Terminal窗口是一致的呢? 伪TTY是指一 ...

  5. poj1149PIGS——网络最大流

    题目:http://poj.org/problem?id=1149 不把猪圈当做点,而把顾客当作点,把猪当作边权(流量): 因为猪圈中的猪可流动,所以共用一个猪圈的人互相连边: 注意应该连成链的形式, ...

  6. The Review Plan I-禁位排列和容斥原理

    The Review Plan I Time Limit: 5000ms Case Time Limit: 5000ms Memory Limit: 65536KB   64-bit integer ...

  7. sulime的必备插件

    常用插件 : SideBarEnhancements HTML-CSS-JS Prettify BracketHighlighter SublimeCodeIntel Emmet CTags Mark ...

  8. 用mapreduce实现从hbase导出到hdfs,实现一个工具类,能够支持任意表 任意列 任意路径导出,并且支持表头

    分析: 1.由于是任意列 任意表 任意路径,我们很容易想到是参数传入,参数传入后怎么去获得参数,根据我们以往的经验就是通过args[]来获取,但是在mapper或者是reducer中,我们不能直接将参 ...

  9. algorithm-exercise

    https://github.com/billryan/algorithm-exercise Part I - Basics Basic Data Structure string: s2 = &qu ...

  10. C#防止sql注入

    public class SqlZr {      public SqlZr()      {          //          // TODO: 在此处添加构造函数逻辑          / ...