npm彰阴、browser-sync 凭涂、gulp工具的學(xué)習(xí)

npm

  • 官網(wǎng)[https://www.npmjs.com]
  • node package manager
  • 命令:
    • 初始化:npm init
    • 安裝指定包:npm install jquery --save
    • 刪除指定包:npm remove jquery --save
    • 卸載一般用 npm uninstall --save jquery 或者 npm remove --save jquery
    • 下載安裝package.json中dependencies屬性對(duì)的文件:npm install --production
  • npm的使用步驟
    • 第一步、npm init創(chuàng)建一個(gè)文件夾(注意:不要用中文名,不能以數(shù)字開頭救赐,不能有空格)
    • 第二步涧团、執(zhí)行npm init -y
    • 第三步、安裝需要的js庫 npm install --save jquery

browser-sync

  • 更改代碼之后自動(dòng)刷新瀏覽器
  • 需要使用npm進(jìn)行全局安裝:npm install browser-sync -g,-g表示安裝到全局
  • 使用:browser-sync start --server --files "./index.html,app.css,./css/*.css,*.*"
  • --files參數(shù)指定要監(jiān)視的文件经磅,后面跟要監(jiān)視的文件的文件路徑以逗號(hào)分隔泌绣。

gulp

官網(wǎng)
中文網(wǎng)

  • 前端自動(dòng)化構(gòu)建工具
    js壓縮,var x,xname,混淆
    合并.
    css壓縮
    html壓壓縮

  • grunt ,webpack...

核心就5個(gè)方法

  • task,gulp中是一個(gè)個(gè)任務(wù)的形式來實(shí)現(xiàn)功能预厌。
    • task('任務(wù)名',function(){
      .....
      });
  • src
    • src('./*.js')
  • dest('./minjs/')// 指定處理后的文件的輸出路徑.
  • watch('./*.js',['任務(wù)名1','任務(wù)名2']);
  • run('任務(wù)名');//執(zhí)行指定的任務(wù).

gulp的安裝

  • 使用npm 進(jìn)行安裝
  • npm install gulp-cli -g;

gulp 使用

使用時(shí)還需要在項(xiàng)目中通過npm非全局安裝gulp

  • npm install gulp --save-dev
    • -dev安裝在本地
    • 之所以在全局安裝了一次還有在項(xiàng)目中安裝阿迈,是為了保證gulp的版本的控制,每次使用的時(shí)候重新安裝能控制gulp的版本

還需要在當(dāng)前項(xiàng)目根目錄添加一個(gè)gulpfile.js文件來寫具體的任務(wù)代碼.

// 得到gulp對(duì)象
var gulp = require("gulp");
//引入gulp-uglify插件 用來壓縮js
var uglify = require('gulp-uglify');
//引入gulp-concat插件 用來合并代碼 js,css都能合并
var concat = require('gulp-concat');
//引入gulp-cssnano插件 用來對(duì)css進(jìn)行壓縮
var cssnano = require('gulp-cssnano');
//引入gulp-htmlmin插件 用來對(duì)html代碼進(jìn)行壓縮
var htmlmin = require('gulp-htmlmin');
//引入gulp-imagemin插件 對(duì)圖片進(jìn)行壓縮
var imagemin = require('gulp-imagemin');
//引入gulp-spriter插件 合并成精靈圖
var spriter = require('gulp-spriter');

//創(chuàng)建js壓縮任務(wù)
gulp.task('script',function(){
  // 這里寫任務(wù)具體需要做的事情.
  // 2.匹配到app.js文件,如果使用多個(gè)規(guī)則轧叽,需要以數(shù)組的形式來書寫第一個(gè)參數(shù)苗沧,數(shù)組中的每一個(gè)元素都是一個(gè)規(guī)則。
  gulp.src(['./app.js','./signIn.js'])
  //合并后生成的文件名
  .pipe(concat('all.js'))
  //調(diào)用方法 壓縮js
  .pipe(uglify())
  //將合格的js文件 輸出到指定目錄
  .pipe(gulp.dest('./dist'))
});
//創(chuàng)建css壓縮任務(wù)
gulp.task('style',function(){
   // 匹配css文件
   gulp.src(['./style.css','./signIn.css'])
   .pipe(concat('all.css')) // 需要指定一個(gè)名字炭晒,作為壓縮后文件的文件名
   .pipe(cssnano())
   .pipe(gulp.dest('./dist'))
});
//創(chuàng)建html壓縮任務(wù)
gulp.task('htmlmin',function(){
    gulp.src('./index.html')
        .pipe(htmlmin({
            //collapseWhitespace:清除空格
            collapseWhitespace:true,
            //collapseBooleanAttributes:省略布爾屬性的值待逞,
            collapseBooleanAttributes:true,
            //removeComments:清除html中注釋的部分
            removeComments:true,
            //removeEmptyAttributes:清除所有的空屬性
            removeEmptyAttributes:true,
            //removeSciptTypeAttributes:清除所有script標(biāo)簽中的type="text/javascript"屬性。
            removeScriptTypeAttributes:true,
            //removeStyleLinkTypeAttributes:清楚所有Link標(biāo)簽上的type屬性
            removeStyleLinkTypeAttributes:true,
            //minifyJS:壓縮html中的javascript代碼网严。
            minifyJS:true,
            //minifyCSS:壓縮html中的css代碼
            minifyCSS:true
        }))
        .pipe(gulp.dest('./dist'));
});
//創(chuàng)建合并壓縮方法
gulp.task('concat',function(){
    // 匹配文件
    gulp.src(['./1.js','./2.js'])
        //調(diào)用合并方法 生成新的文件名
        .pipe(concat('index.js'))
        //調(diào)用壓縮方法
        .pipe(uglify())
        //輸出到指定目錄
        .pipe(gulp.dest('./build'));
})
//創(chuàng)建圖片壓縮方法
gulp.task('imagemin',function(){
  //引入圖片地址方法
  gulp.src('./images/*')
      //調(diào)用圖片壓縮
      .pipe(imagemin())
      //輸出壓縮后圖片的存放地址
      .pipe(gulp.dest('dist/images'));
});
//創(chuàng)建合并精靈圖任務(wù)
gulp.task('spriter',function(){
  return gulp.src('./style.css')//原始的css文件地址
             //調(diào)用spriter精靈圖合并方法
             .pipe(spriter({
               sprite:'test.png',//合并后圖片的名字
               slice:'./slice',//原始小圖片路徑
               outpath:'build/tests'//合并后的大圖的地址
             }))
             //合并精靈圖后的css的文件地址
             .pipe(gulp.dest('./build/css'));
})
//創(chuàng)建監(jiān)視任務(wù)
gulp.task("watch",function(){
      //調(diào)用watch方法
      //第一個(gè)參數(shù)是監(jiān)視目標(biāo)文件,第二個(gè)參數(shù)是執(zhí)行的任務(wù)
      gulp.watch(['./app.js','./signIn.js'],["script"]);
  })
  • 調(diào)用方法直接在控制臺(tái)輸入gulp 任務(wù)名

gulp監(jiān)視文件的改變

  • 監(jiān)視文件,當(dāng)文件發(fā)生改變時(shí),watch方法就會(huì)執(zhí)行目標(biāo)文件所綁定的事件
  • 使用:在cmd命令窗口直接調(diào)用gulp myWatch方法
  • 第一個(gè)參數(shù)是監(jiān)視目標(biāo)文件,第二個(gè)參數(shù)是執(zhí)行的任務(wù)
  gulp.task("myWatch",function(){
      gulp.watch(["./a.html","./b.html"],function(){
          console.console.log()
      })
  })

gup 結(jié)合browsr-sync使用

//gulp結(jié)合browser-sync一起使用
//當(dāng)你改動(dòng)html,css,js的時(shí)候 --> 合并,壓縮我們的html,js,css --> browser-sync刷新瀏覽器
//使用之前要在當(dāng)前項(xiàng)目安裝browser-sync 命令:npm install --save-dev browser-sync
var browserSync = require('browser-sync') //得到browserSync對(duì)象
//創(chuàng)建browserSync任務(wù)
gulp.task("browserSync",function(){ // 靜態(tài)服務(wù)器
        //第一步先用gulp監(jiān)視index.html,如果有改動(dòng)就會(huì)執(zhí)行htmlmin這個(gè)任務(wù)
        gulp.watch(["./index.html"],["htmlmin"]);
        //第二步開啟browserSyn,一旦html文件夾里面壓縮的html有改動(dòng)识樱,就會(huì)刷新瀏覽器
        browserSync({
            server:{
                baseDir:"./html" //創(chuàng)建服務(wù)器的文件夾
            },
            files:["./html/index.html"] //同步的html代碼
        });
    })

gulp的一些插件

  • 也是使用npm安裝
  • 對(duì)js代碼進(jìn)行壓縮 gulp-uglify
  • 對(duì)代碼進(jìn)行合并 gulp-concat
  • 對(duì)css進(jìn)行壓縮 gulp-cssnano
  • 對(duì)html進(jìn)行壓縮 gulp-htmlmin
  • 對(duì)圖片進(jìn)行壓縮 gulp-imagemin
  • 合并精靈圖 gulp-spriter
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市震束,隨后出現(xiàn)的幾起案子怜庸,更是在濱河造成了極大的恐慌,老刑警劉巖驴一,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件休雌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡肝断,警方通過查閱死者的電腦和手機(jī)杈曲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胸懈,“玉大人担扑,你說我怎么就攤上這事∪で” “怎么了涌献?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)首有。 經(jīng)常有香客問我燕垃,道長(zhǎng)枢劝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任卜壕,我火速辦了婚禮您旁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轴捎。我一直安慰自己鹤盒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布侦副。 她就那樣靜靜地躺著侦锯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秦驯。 梳的紋絲不亂的頭發(fā)上尺碰,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音汇竭,去河邊找鬼葱蝗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛细燎,可吹牛的內(nèi)容都是我干的两曼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼玻驻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼悼凑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起璧瞬,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤户辫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后嗤锉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渔欢,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年瘟忱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奥额。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡访诱,死狀恐怖垫挨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情触菜,我是刑警寧澤九榔,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響哲泊,放射性物質(zhì)發(fā)生泄漏剩蟀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一攻旦、第九天 我趴在偏房一處隱蔽的房頂上張望喻旷。 院中可真熱鬧,春花似錦牢屋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至遍尺,卻和暖如春截酷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乾戏。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工迂苛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鼓择。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓三幻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親呐能。 傳聞我的和親對(duì)象是個(gè)殘疾皇子念搬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比摆出,gulpjs無需寫一大堆繁雜的配置參數(shù)朗徊,API也非常簡(jiǎn)單,學(xué)...
    依依玖玥閱讀 3,149評(píng)論 7 55
  • gulpjs是一個(gè)前端構(gòu)建工具偎漫,與gruntjs相比爷恳,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單象踊,學(xué)...
    井皮皮閱讀 1,292評(píng)論 0 10
  • gulpjs是一個(gè)前端構(gòu)建工具温亲,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù)通危,API也非常簡(jiǎn)單铸豁,學(xué)...
    小裁縫sun閱讀 922評(píng)論 0 3
  • 1、gulp的安裝 首先確保你已經(jīng)正確安裝了nodejs環(huán)境菊碟。然后以全局方式安裝gulp: npm install...
    F_imok閱讀 2,364評(píng)論 1 11
  • gulpjs是一個(gè)前端構(gòu)建工具节芥,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單头镊,學(xué)...
    build1024閱讀 527評(píng)論 0 0