国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

gulp+webpack工作流探索

fancyLuo / 348人閱讀

摘要:概述最近研究了下工作流,先說一下我司的情況,我司現(xiàn)在是端用直出,用構建,部分就不進行描述了,因為網(wǎng)上的構建方法都是很成熟的了。

概述

最近研究了下工作流,先說一下我司的情況,我司現(xiàn)在是pc端用php直出,h5用vuejs構建,vuejs部分就不進行描述了,因為網(wǎng)上的構建方法都是很成熟的了。
以下是php直出,需要向后臺同學提供html文件的構建方法。調試都是在本地調試的,調試完成后打包生成html交付給后臺同學。

http-server 模擬數(shù)據(jù),調試ajax

webpack 打包js,模塊化管理

gulp打包css,壓縮css, 壓縮圖片

項目目錄
|- apps //html文件  
|- dist  
    |- css //存放壓縮打包后的css  
    |- js //webpack 自動打包的js  
    |- images //壓縮后的圖片  
    //這里還有打包后的html文件  
|- mock //模擬數(shù)據(jù),json  
|- ssi //生成的ssi頁面片  
|- js //js源文件  
    |- common 公共模塊  
    |- 業(yè)務js  
|- css   
    |- sass //sass源文件  
        |- common 公共sass函數(shù)  
        |- 業(yè)務css  
    |- stylesheets //編譯后的css 開發(fā)時引入 compass編譯  
|- images  
    原圖片  
修改依賴包內容

因為rev默認生成的版本號是加在靜態(tài)文件文件名上的,如main-d3id7340.js這樣會造成服務器上有n多的js,所以我們希望生成main.js?v=233333這樣的版本號,在配合ssi就能很好的維護,以后如果只涉及修改靜態(tài)文件的時候,就只用重新上傳靜態(tài)文件和ssi頁面片就可以了,不需要再去改php中的引用,所以在網(wǎng)上找到了一個方法。

打開node_modulesgulp-revindex.js

第133行 manifest[originalFile] = revisionedFile;
更新為: manifest[originalFile] = originalFile + "?v=" + file.revHash;

打開nodemodulesgulp-revnodemodulesrev-pathindex.js

10行 return filename + "-" + hash + ext;
更新為: return filename + ext;

打開node_modulesgulp-rev-collectorindex.js

31行 if ( path.basename(json[key]).replace(new RegExp( opts.revSuffix ), "" ) !== path.basename(key) ) {
更新為: if ( path.basename(json[key]).split("?")[0] !== path.basename(key) ) {
gulp打包

gulpfile.js如下

var gulp = require("gulp");
var minicss = require("gulp-cssmin");
var useref = require("gulp-useref");
var imagemin = require("gulp-imagemin");
var pngquant = require("imagemin-pngquant");
var gulpif = require("gulp-if");
var yargs = require("yargs");
var rev = require("gulp-rev");
var revCollector = require("gulp-rev-collector");
var replace = require("gulp-replace");
var runSequence = require("run-sequence");

var output = "dist";
//獲取輸入的參數(shù)
var argv = yargs.argv,
  name = argv.name,
  type;

if(argv.type == "pub"){
  type = "";
}else if(argv.type == "test"){
  type = ".test"
}

//合并html里用到的css
gulp.task("csscombine",function(){
  return gulp.src("apps/"+name+"/*")
    .pipe(useref())
    .pipe(gulpif("*.css", minicss()))
    .pipe(gulp.dest("dist"));

});

//壓縮css,生成css版本號
gulp.task("css", function(){
  return gulp.src("dist/css/"+name+"/*.css")
    .pipe(rev())
    .pipe(gulp.dest("dist/css/"+name))
    .pipe( rev.manifest() )
    .pipe( gulp.dest( "rev/css" ) );
});

//生成js版本號
gulp.task("js", function(){
  return gulp.src("dist/js/"+name+"/*.js")
    .pipe(rev())
    .pipe(gulp.dest("dist/js/"+name))
    .pipe( rev.manifest() )
    .pipe( gulp.dest( "rev/js" ) );
});

//壓縮圖片
gulp.task("imagemin", function(){
  return gulp.src("images/"+name+"/*")
    .pipe(imagemin({
      progressive: true,
      svgoPlugins: [{removeViewBox: false}],
      use: [pngquant()]
    }))
    .pipe(gulp.dest(output + "/images/"+name));
})

//生成cssi頁面片
gulp.task("cssi",function(){
  return gulp.src(["rev/**/*.json","ssi/cssi/cssi.html"])
  .pipe(replace("{name}",name))
  .pipe(replace("{type}",type))
  .pipe( revCollector())
  .pipe(gulp.dest("ssi/cssi/"+name));
});

//生成jsi頁面片
gulp.task("jsi", function(){
  return  gulp.src(["rev/**/*.json","ssi/jsi/jsi.html"])
    .pipe(replace("{name}",name))
    .pipe(replace("{type}",type))
    .pipe( revCollector())
    .pipe(gulp.dest("ssi/jsi/"+name));
});

//替換html里的路徑
gulp.task("replacehtml",function(){
  var scriptReg = new RegExp("                
閱讀需要支付1元查看
<