zoukankan      html  css  js  c++  java
  • 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')); });
  • 相关阅读:
    HTTP协议
    浏览器兼容性问题
    面试笔试重点总结:操作系统、计算机网络、设计模式
    笔试、面试重点总结:算法基础、数据结构
    笔试、面试重点总结:WIN32、MFC与Linux
    《Java程序员面试笔试宝典》终于在万众期待中出版啦~
    《Java程序员面试笔试宝典》之Static关键字有哪些作用
    《Java程序员面试笔试宝典》之字符串创建与存储的机制是什么
    《Java程序员面试笔试宝典》之为什么需要public static void main(String[] args)这个方法
    《Java程序员面试笔试宝典》之Java变量命名有哪些规则
  • 原文地址:https://www.cnblogs.com/lichuntian/p/9726364.html
Copyright © 2011-2022 走看看