摘要:概念之前有寫(xiě)了,現(xiàn)在重新寫(xiě)感覺(jué)二者最終結(jié)果雖說(shuō)相差無(wú)幾,但是側(cè)重點(diǎn)還是有所不同更偏向于工程化,側(cè)重于項(xiàng)目的整個(gè)流程控制,你可以二者結(jié)合,也可以分開(kāi)取舍都有利于前端項(xiàng)目的工程化構(gòu)建安裝全局安裝作為項(xiàng)目的開(kāi)發(fā)依賴安裝在項(xiàng)目根目錄下創(chuàng)建一
gulp概念
之前有寫(xiě)了webpack, 現(xiàn)在重新寫(xiě)gulp感覺(jué)二者最終結(jié)果雖說(shuō)相差無(wú)幾,但是側(cè)重點(diǎn)還是有所不同 webpack更偏向于工程化,gulp側(cè)重于項(xiàng)目的整個(gè)流程控制,你可以二者結(jié)合,也可以分開(kāi)取舍 都有利于前端項(xiàng)目的工程化構(gòu)建
安裝
1、全局安裝
$ npm install -g gulp
2、作為項(xiàng)目的開(kāi)發(fā)依賴(devDependencies)安裝:
$ npm install --save-dev gulp
3、 在項(xiàng)目根目錄下創(chuàng)建一個(gè)名為 gulpfile.js 的文件:
var gulp = require("gulp"); gulp.task("default", function() { // 將你的默認(rèn)的任務(wù)代碼放在這 });
4、 運(yùn)行 gulp:
$ gulp
api
(1) gulp.src()
gulp.src("client/js/**/*.js") // 匹配 "client/js/somedir/somefile.js" 并且將 `base` 解析為 `client/js/` .pipe(minify()) .pipe(gulp.dest("build")); // 寫(xiě)入 "build/somedir/somefile.js" gulp.src("client/js/**/*.js", { base: "client" }) .pipe(minify()) .pipe(gulp.dest("build")); // 寫(xiě)入 "build/js/somedir/somefile.js"
(2) gulp.task()
其實(shí)gulp就是不斷起一些任務(wù)函數(shù),來(lái)運(yùn)行你的項(xiàng)目 gulp.task("copyplugin",function(){ gulp.src("./src/plugin/**/*") .pipe(gulp.dest("./dev/plugin")) }) gulp.task("packscss",function(){ gulp.src("./src/styles/app.scss") .pipe(sass().on("error",sass.logError)) .pipe(gulp.dest("./dev/styles")) }) ....
(3) gulp.watch()
用來(lái)接聽(tīng)任務(wù)函數(shù),把要接聽(tīng)的任務(wù)傳入 啟動(dòng)的時(shí)候 會(huì)根據(jù)傳入的任務(wù)進(jìn)行執(zhí)行,當(dāng)然,不會(huì)按順序 gulp.task("watch",function(){ gulp.watch("./src/*.html",["copyhtml"]) gulp.watch("./src/images/**/*",["copyimg"]) gulp.watch("./src/styles/**/*.scss",["packscss"]) }
(4) 當(dāng)你想直接gulp啟動(dòng)項(xiàng)目的話,會(huì)使用
gulp.task("default",["webserver","copyhtml","copyimg","copyplugin","packscss","packjs","watch"], function(){ console.log("DONE") })
其實(shí)gulp常用的就是插件,下面介紹一下項(xiàng)目中常用的插件,從而幫你更高效的構(gòu)建項(xiàng)目
(1) 啟動(dòng)服務(wù)插件 npm i gulp-webserver -D
配置: 引入gulp var gulp = require("gulp") var webserver = require("gulp-webserver") gulp.task("webserver",function(){ gulp.src("./dev") //編譯后的根目錄 .pipe(webserver({ host : "localhost", port : 4000, directoryListing : { //啟動(dòng)項(xiàng)目顯示目錄 enable : true, path : "./dev" }, livereload : true })) })
(2) 編譯sass npm i gulp-sass node-sass -D
var sass = require("gulp-sass") gulp.task("packscss",function(){ gulp.src("./src/styles/app.scss") .pipe(sass().on("error",sass.logError)) .pipe(gulp.dest("./dev/styles")) console.log("sass編譯啦") })
(3) 編譯commenjs實(shí)現(xiàn)模塊化開(kāi)發(fā) npm i gulp-webpack -D
var webpack = require("gulp-webpack") gulp.task("packjs",function(){ gulp.src("./src/scripts/app.js") .pipe(webpack({ output : { filename : "app.js" //輸出文件為 name.js }, module : { loaders :[ //加載器 { test : /.js$/, //指定加載文件的類型 loader : "imports-loader", //用imports-loader解析 exclude : "./node_modules" //排除不需要編譯的js文件 } ] } })) .pipe(gulp.dest("./dev/scripts")) })
(4) 解析瀏覽器不識(shí)別的require npm i imports-loader -D
直接 $ gulp 即可 bogon:guang_m macbook$ npm i imports-loader -D guang_m@1.0.0 /Users/macbook/Desktop/learning/third/guang_m └─┬ imports-loader@0.7.1 ├── loader-utils@1.1.0 └── source-map@0.5.7 npm WARN guang_m@1.0.0 No description npm WARN guang_m@1.0.0 No repository field. bogon:guang_m macbook$ gulp [15:01:40] Using gulpfile ~/Desktop/learning/third/guang_m/gulpfile.js [15:01:40] Starting "webserver"... [15:01:40] Webserver started at http://localhost:4000 [15:01:40] Finished "webserver" after 21 ms [15:01:40] Starting "packscss"...
(5) 解析多個(gè)js文件 npm i vinyl-named -D
gulp.src("./src/scripts/app.js") .pipe(name()) .pipe(webpack({ output: { filename: "[name].js" }, module: { loaders: [ { test: /.js$/, loader: "imports-loader", exclude: "./node_modules" } ] }
(6) 下載yo3 框架,專注于移動(dòng)端的scss npm i yo3 -D
在node_modules中找到y(tǒng)o3 復(fù)制style到項(xiàng)目src中 習(xí)慣性的在style中創(chuàng)建app.scss 用來(lái)import一些需要的文件 ,再在usage中創(chuàng)建模塊scss文件index.scss顯示頁(yè)面樣式 .m-index{ height: 100%; @include flexbox(); @include flex-direction(column); header{ height: .44rem; background: #00b38a; } section{ background: #fff; @include flex(); } footer{ height:.44rem; background: #f6f6f6; } }
(7) 加載字符串模板 npm i string-loader -D
loaders : [ { test : /.js$/, loader : "imports-loader", exclude : "./node_modules" }, { test : /.string$/, loader : "string-loader" } ]
好了 ,常用就這些了 如果有新的知識(shí)點(diǎn)后續(xù)還會(huì)補(bǔ)充.....
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/92032.html
摘要:通過(guò)輸入文件流,將文件寫(xiě)入硬盤,并輸出所有數(shù)據(jù),能繼續(xù)向下游,所以文件流可以繼續(xù)被處理并被寫(xiě)入到其他地方。如果寫(xiě)入文件夾不存在,就會(huì)創(chuàng)建它。第二個(gè)參數(shù),當(dāng)前任務(wù)依賴的任務(wù)列表,依賴任務(wù)在當(dāng)前任務(wù)運(yùn)行之前完成。 gulp 簡(jiǎn)介 用自動(dòng)化構(gòu)建工具增強(qiáng)你的工作流程。 通過(guò)代碼優(yōu)于配置的策略,Gulp 讓簡(jiǎn)單的任務(wù)簡(jiǎn)單,復(fù)雜的任務(wù)可管理。 利用 Node.js 流的威力,你可以快速構(gòu)建項(xiàng)目并...
摘要:在這種背景下,誕生了很多工具很多前端工作流程。目前我們很多時(shí)候常說(shuō)的前端工程師,其實(shí)主要指的就是其工程師。所以就是來(lái)解決這些問(wèn)題的最后至此前端的一個(gè)工作結(jié)構(gòu)介紹至此結(jié)束。 這個(gè)時(shí)代不懂點(diǎn)前端知識(shí),真的沒(méi)有辦法生存。就算不會(huì)寫(xiě),也得了解它的原理吧! 最近做了一些總結(jié),之前都是迷迷糊糊,搞不清楚前端之前的相關(guān)定位。好好梳理了一下。錯(cuò)誤之處請(qǐng)各位指正。 本文主要說(shuō)的是 JavaScript ...
摘要:先前學(xué)習(xí)了但是總是感覺(jué)略顯復(fù)雜,并且現(xiàn)在很多公司工作流用的比較多,因此就入的坑來(lái)踩一踩,技多不壓身,霍霍霍。高效利用強(qiáng)大的工作流,快速的構(gòu)建項(xiàng)目并減少頻繁的操作。易學(xué)通過(guò)最少的,掌握毫不費(fèi)力,構(gòu)建工作盡在掌握如同一系列流管道。 先前學(xué)習(xí)了webpack,但是總是感覺(jué)webpack略顯復(fù)雜,并且現(xiàn)在很多公司gulp工作流用的比較多,因此就入gulp的坑來(lái)踩一踩,技多不壓身,霍霍霍...。...
摘要:三配置環(huán)節(jié)目的一是為之后的環(huán)節(jié)初始化工作流參數(shù),二是準(zhǔn)備好應(yīng)用文件夾內(nèi)容即要打包的目標(biāo)文件夾做的事解析命令行參數(shù),初始化工作參數(shù),填充配置文件,把配置文件和相關(guān)依賴文件導(dǎo)入到文件夾內(nèi)合適的 首發(fā)于酷家樂(lè)前端博客,作者@摘星(segmentfault @StinsonZhao) 我們能從很多地方學(xué)習(xí)到怎么起一個(gè) Electron 項(xiàng)目,有些還會(huì)介紹怎么打包或構(gòu)建你的代碼,但距離「真正地...
閱讀 3802·2021-11-23 09:51
閱讀 1471·2021-11-10 14:35
閱讀 4079·2021-09-22 15:01
閱讀 1373·2021-08-19 11:12
閱讀 463·2019-08-30 15:53
閱讀 1756·2019-08-29 13:04
閱讀 3508·2019-08-29 12:52
閱讀 3151·2019-08-23 16:14