成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端工程化篇之 Gulp

LeanCloud / 411人閱讀

摘要:是一個構(gòu)建工具,基于的平臺運(yùn)行,使用的是的模塊化語法。我們使用需要用到的包一個任務(wù),對應(yīng)一個包,對應(yīng)一個處理邏輯對應(yīng)的是同步任務(wù),從左到右,依次執(zhí)行任務(wù)。時間長對應(yīng)的是異步任務(wù),效率高,時間短。

gulp 是一個構(gòu)建工具,基于Node.js的平臺運(yùn)行,使用的是commonJs的模塊化語法。

我們使用gulp需要用到的包

一個TASK任務(wù),對應(yīng)一個包,對應(yīng)一個處理邏輯、

gulp.series對應(yīng)的是同步任務(wù),從左到右,依次執(zhí)行任務(wù)。時間長

gulp.parallel對應(yīng)的是異步任務(wù),效率高,時間短。

gulp.src 表明文件從哪里讀取

gulp.dest 表明文件輸出到哪

const gulp = require("gulp");   //gulp的包 
const eslint = require("gulp-eslint"); //eslint的包  語法檢查 
const babel = require("gulp-babel");      //編譯ES語法的babel包 
const browserify = require("gulp-browserify");  //編譯commonJs語法的工具
const rename = require("gulp-rename");    //重命名文件的包
const less = require("gulp-less");   // 識別less文件的gulp的包
const livereload = require("gulp-livereload");   //監(jiān)控文件的包
const connect = require("gulp-connect");    // 熱更新的包
const open = require("open");   //打開網(wǎng)頁的包
const uglify = require("gulp-uglify");   //壓縮JS代碼的包
const LessAutoprefix = require("less-plugin-autoprefix"); //將LESS文件混合的插件包
// https://github.com/browserslist/browserslist   
const autoprefix = new LessAutoprefix({ browsers: ["cover 99.5%", "not dead"] });  //拓展CSS識別的包
const cssmin = require("gulp-cssmin");  //壓縮CSS的包
const concat = require("gulp-concat");   //合并文件的包 
const htmlmin = require("gulp-htmlmin");  //壓縮HTML的包 


// 注冊任務(wù)
/*
  開發(fā)套路:
    1. 去https://gulpjs.com/plugins/搜相關(guān)的插件  gulp-xxx
    2. 打開插件的npm倉庫 看文檔使用
    3. 下載并引入gulp插件
    4. 配置插件任務(wù)
 */

// 語法檢查  必須有一個eslint的配置文件
gulp.task("eslint", function () {
  // 讀取所有的js文件, 返回值就是一個可讀流
  return gulp.src(["src/js/*.js"])
    // 對流中的文件/數(shù)據(jù)進(jìn)行語法檢查
    .pipe(eslint())
    .pipe(eslint.format())
    .pipe(eslint.failAfterError())
    .pipe(livereload());
})

// 語法轉(zhuǎn)換
// babel能將es6模塊化語法轉(zhuǎn)換為commonjs模塊化語法
// 能將es6及其以上的語法轉(zhuǎn)換為es5及其以下的語法
gulp.task("babel", () =>
  // 讀取所有js文件
  gulp.src("src/js/*.js")
    // 進(jìn)行語法轉(zhuǎn)換
    .pipe(babel({
      presets: ["@babel/preset-env"] //此處需要修改,官網(wǎng)有誤
    }))
    // 輸出出去
    .pipe(gulp.dest("build/js"))
    .pipe(livereload())
);

// 將commonjs的模塊化語法轉(zhuǎn)換成瀏覽器能識別語法
gulp.task("browserify", function() {
  // 只要放入口文件
  return gulp.src("build/js/app.js")
    .pipe(browserify())
    // 重命名文件
    .pipe(rename("built.js"))
    .pipe(gulp.dest("build/js"))
    .pipe(livereload());
});

// 壓縮js代碼
gulp.task("uglify", function () {
  return gulp.src("./build/js/built.js")
    .pipe(uglify())
    .pipe(rename("dist.min.js"))
    .pipe(gulp.dest("dist/js"))
})

// 將less編譯成css
gulp.task("less", function () {
  return gulp.src("./src/less/*.less")
    .pipe(less())
    .pipe(gulp.dest("./build/css"))
    .pipe(livereload());
});

// 壓縮css
gulp.task("css", function () {
  return gulp.src("./src/less/*.less")
    .pipe(concat("dist.min.css"))
    .pipe(less({
      plugins: [autoprefix]
    }))
    .pipe(cssmin())
    .pipe(gulp.dest("./dist/css"))
});

// 壓縮html
gulp.task("html", () => {
  return gulp.src("src/*.html")
    .pipe(htmlmin({
      collapseWhitespace: true, // 去除空格
      removeComments: true // 去掉注釋
    }))
    .pipe(gulp.dest("dist"));
});

// 自動化 --> 自動編譯  --> 自動刷新瀏覽器(熱更新) --> 自動打開瀏覽器
gulp.task("watch", function() {
  livereload.listen();
  // 開啟服務(wù)器
  connect.server({
    name: "Dev App",
    root: ["build"],
    port: 3000,
    livereload: true  //熱更新
  });
  // 打開瀏覽器
  open("http://localhost:3000");
  
  // 監(jiān)視指定文件,一旦文件發(fā)生變化,就執(zhí)行后面的任務(wù)
  gulp.watch("src/less/*.less", gulp.series("less"));
  gulp.watch("src/js/*.js", gulp.series("js-dev"));
});

// 配置默認(rèn)任務(wù) --> 執(zhí)行以上多個任務(wù)
gulp.task("js-dev", gulp.series("eslint", "babel", "browserify")); // 同步順序執(zhí)行,同一時間只能執(zhí)行一個任務(wù)  速度慢
gulp.task("js-prod", gulp.series("js-dev", "uglify"));
// gulp.task("default", gulp.parallel("eslint", "babel", "browserify")); // 異步執(zhí)行,同一時間執(zhí)行多個任務(wù)   速度快
gulp.task("build", gulp.parallel("js-dev", "less"));
// 生產(chǎn)環(huán)境的指令: gulp prod
gulp.task("prod", gulp.parallel("js-prod", "css", "html"));
// 開發(fā)環(huán)境的指令: gulp start
gulp.task("start", gulp.series("build", "watch"));
上面包括了基本上所有g(shù)ulp工程化所需要的包的使用方法和注釋,喜歡的朋友希望你收藏!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/54753.html

相關(guān)文章

  • 前端程化篇之 Gulp

    摘要:是一個構(gòu)建工具,基于的平臺運(yùn)行,使用的是的模塊化語法。我們使用需要用到的包一個任務(wù),對應(yīng)一個包,對應(yīng)一個處理邏輯對應(yīng)的是同步任務(wù),從左到右,依次執(zhí)行任務(wù)。時間長對應(yīng)的是異步任務(wù),效率高,時間短。 gulp 是一個構(gòu)建工具,基于Node.js的平臺運(yùn)行,使用的是commonJs的模塊化語法。 我們使用gulp需要用到的包 一個TASK任務(wù),對應(yīng)一個包,對應(yīng)一個處理邏輯、 gulp.s...

    Donald 評論0 收藏0
  • 個人分享--web前端學(xué)習(xí)資源分享

    摘要:前言月份開始出沒社區(qū),現(xiàn)在差不多月了,按照工作的說法,就是差不多過了三個月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來說,差不多到了轉(zhuǎn)正的時候,會進(jìn)行總結(jié)或者分享會議那么今天我就把看過的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區(qū),現(xiàn)在差不多9月了,按照工作的說法,就是差不多過了三個月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來說,差不多到了轉(zhuǎn)正的時候,會進(jìn)行總結(jié)或者分享會議!那么今天我就...

    sherlock221 評論0 收藏0
  • 前端入門篇之div

    摘要:由于之前沒有做過前端的開發(fā)工作,在現(xiàn)在的前端開發(fā)工作中遇到許多坑,有關(guān)于的,有關(guān)于樣式的,所以想在這里總結(jié)一下。文章的結(jié)構(gòu)的可能會比較混亂,同一篇文章可能會有多次的修改。 由于之前沒有做過前端的開發(fā)工作,在現(xiàn)在的前端開發(fā)工作中遇到許多坑,有關(guān)于javascript的,有關(guān)于css樣式的,所以想在這里總結(jié)一下。文章的結(jié)構(gòu)的可能會比較混亂,同一篇文章可能會有多次的修改。 div顯示在同一行...

    Backache 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<