npm + gulp + scss + 項目架構

 

原創: 格爾尼卡

在此聲明,每部分成色標註爲文件的變化,而且都帶有關鍵性的註釋語句。但願能給你們帶來幫助。javascript

1、npm講解php

  https://www.npmjs.com.cn/css

NPM是隨同NodeJS一塊兒安裝的包管理工具,能解決NodeJS代碼部署上的不少問題,常見的使用場景有如下幾種:html

    容許用戶從NPM服務器下載別人編寫的第三方包到本地使用。前端

    容許用戶從NPM服務器下載並安裝別人編寫的命令行程序到本地使用。java

    容許用戶將本身編寫的包或命令行程序上傳到NPM服務器供別人使用。node

因爲nodejs已經集成了npm,因此npm也一併安裝好了。一樣能夠經過輸入 "npm -v" 來測試是否成功安裝。git

node -vnpm

npm -vjson

因爲npm的服務器在國外,國內爲了保證訪問速度,咱們能夠訪問淘寶鏡像,之後就能夠經過cnpm代替npm指令了

http://npm.taobao.org/

npm install -g cnpm --registry=https://registry.npm.taobao.org

安裝模塊

npm install <Module Name> --global             ------ 全局安裝

    //簡寫爲 npm i <Module Name> -g          ---     必定要小寫                     

npm install <Module Name> ------ 臨時安裝

    // 簡寫爲 npm i <Module Name>

npm install <Module Name> --save                ------ 項目依賴

    // 簡寫爲 npm i<Module Name> -S        ---     必定要大寫

npm install <Module Name> --save-dev            ------ 開發依賴

    // 簡寫爲 npm i <Module Name> -D          ---     必定要大寫

升級模塊、更新模塊

npm install <Module Name>@version --global             ------ 全局安裝

    //簡寫爲 npm i <Module Name>@version -g          ---     必定要小寫                     

npm install <Module Name>@version------ 臨時安裝

    // 簡寫爲 npm i <Module Name>@version

npm install <Module Name>@version --save                ------ 項目依賴

    // 簡寫爲 npm i<Module Name>@version -S        ---     必定要大寫

npm install <Module Name>@version --save-dev            ------ 開發依賴

    // 簡寫爲 npm i <Module Name>@version -D          ---     必定要大寫

刪除模塊

npm uninstall <Module Name> -g

npm uninstall <Module Name> -S 

npm uninstall <Module Name> -D 

2、gulp

        gulp是前端開發過程當中對代碼進行構建的工具,是自動化項目的構建利器;她不只能對網站資源進行優化,並且在開發過程當中不少重複的任務可以使用正確的工具自動完成;使用她,咱們不只能夠很愉快的編寫代碼,並且大大提升咱們的工做效率。

        gulp是基於Nodejs的自動任務運行器,她能自動化地完成 javascript/coffee/sass/less/html/image/css 等文件的的測試、檢查、合併、壓縮、格式化、瀏覽器自動刷新、部署文件生成,並監聽文件在改動後重復指定的這些步驟。在實現上,她借鑑了Unix操做系統的管道(pipe)思想,前一級的輸出,直接變成後一級的輸入,使得在操做上很是簡單。

        gulp 和 grunt 很是相似,但相比於 grunt 的頻繁 IO 操做,gulp 的流操做,能更快地更便捷地完成構建工做。

        全局安裝gulp

cnpm i gulp -g

       查看是否正確安裝:命令提示符執行gulp -v,出現版本號即爲正確安裝,目前最新版本爲3.9.1

gulp -v

        在項目目錄處按住shift,點擊鼠標右鍵,選擇打開命令行,經過cnpm init建立package.json文件,一直敲回車便可

cnpm init

// 如下爲輸出內容

name: (gulp-lesson)

version: (1.0.0)

description:

entry point: (index.js)

test command:

git repository:

keywords:

author:

license: (ISC)

About to write to E:\course-wxx\sz1805\lesson2\gulp-lesson\package.json:

 

{

  "name": "gulp-lesson",

  "version": "1.0.0",

  "description": "",

  "main": "index.js",

  "scripts": {

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "author": "",

  "license": "ISC"

}

Is this ok? (yes)

打開package.json文件,能夠看到以下內容

{

  "name": "gulp-lesson",   // 項目名稱

  "version": "1.0.0",            // 項目版本號

  "description": "",            // 項目描述

  "main": "index.js",         // 默認入口文件

  "scripts": {                     // 測試命令,能夠經過npm run test運行後續的指令,能夠配置,後續會講解

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "author": "",                // 做者

  "license": "ISC"            //  模塊制定協議,讓用戶知道他們有何權限來使用你的模塊,以及使用該模塊有哪些限制

}

3、在該項目目錄下建立一個js文件,gulpfile.js

4、安裝基礎模塊

cnpm i gulp -S

    此時會發現項目文件夾中package.json內容發生了改變

{

  "name": "gulp-lesson",

  "version": "1.0.0",

  "description": "",

  "main": "index.js",

  "scripts": {

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "author": "",

  "license": "ISC",

  "dependencies": { // 開發依賴

    "gulp": "^3.9.1"

  }

}

5、配置項目基本目錄結構

|-gulp-lesson

    |-assets               -------   靜態資源文件

        |-css                  -------   第三方css文件

        |-images               -------   項目圖片文件

        |-js                   -------   第三方js文件

    |-js                   -------   本身的js文件

    |-lib                  -------   scss框架文件

        base.scss          -------   全局base定義,可使用在任何地方

        classes.scss       -------   scss函數的定義

        function.scss      -------   自定義全局函數

        reset.scss         ------    重置mobile及高級瀏覽器上常見的異常

        variables.scss     ------    全局variables,基礎變量map

    |-node_modules         -------   模塊依賴文件

    |-scss                 -------   本身的scss文件

    |-views                -------   項目結構文件

        cart.html           -------   購物車頁面 -----  全選、反選、選擇計算總價、總數量,數量加減

        category.html       -------   分類頁面   -----  各類排序篩選

        detail.html         -------   詳情頁面   -----  吸頂效果、放大效果、詳情介紹,加購物畫車

        index.html          -------   首頁       -----  菜單,樓梯效果,輪播圖

        login.html          -------   登陸頁面   -----  必須表單驗證,後天可用php驗證

        order.html          -------   訂單頁面   -----  地址的填寫、支付方式選擇、確認表單

        pay.html            -------   支付頁面   -----  假的二維碼,支付按鈕,模態框輸金額,點支付

        register.html       -------   註冊頁面   -----  必須表單驗證,後天可用php驗證

        usercenter.html     -------   我的中心   -----  修改密碼,地址管理,訂單管理

    gulpfile.json           -------   gulp項目配置文件   

    package.json            -------   項目基礎配置文件

6、編寫gulpfile.js文件,實現將views,assets文件複製到dist文件夾下,注意dist文件咱們並未建立

var gulp = require('gulp')

gulp.task('copy-views', function () {

    gulp.src('views/**/*')                    // 選中views文件夾下的全部文件包括子文件中的

        .pipe(                                        // 管道思想,上一級的輸出做爲下一級的輸入

            gulp.dest('dist/views')          // 將上訴命令的結果放置dist文件夾中,沒有dist文件夾會自動建立

        )

})

gulp.task('copy-assets', function () {

    gulp.src('assets/**/*')                     // 選中views文件夾下的全部文件包括子文件中的

        .pipe(                                         // 管道思想,上一級的輸出做爲下一級的輸入

            gulp.dest('dist/assets')         // 將上訴命令的結果放置dist文件夾中,沒有dist文件夾會自動建立

        )

})

此時在該項目目錄下運行以下命令

gulp copy-views

[23:02:51] Using gulpfile E:\course-wxx\sz1805\lesson2\gulp-lesson\gulpfile.js

[23:02:51] Starting 'copy-views'...

[23:02:51] Finished 'copy-views' after 5.82 ms

 

gulp copy-assets

[23:03:20] Using gulpfile E:\course-wxx\sz1805\lesson2\gulp-lesson\gulpfile.js

[23:03:20] Starting 'copy-assets'...

[23:03:20] Finished 'copy-assets' after 5.7 ms

咱們就會發如今項目下出現了一個dist的文件夾,下面有兩個文件夾,分別爲assets和views,結構以下:

|-dist

    |-assets              

            |-css                

            |-images              

            |-js     

        |-views

            cart.html           

            category.html       

            detail.html        

            index.html          

            login.html         

            order.html          

            pay.html            

            register.html       

            usercenter.html     

那麼咱們能不能一次性執行完上面的兩個指令呢?

答案必然是能夠的

咱們能夠修改gulpfile.js文件以下

var gulp = require('gulp')

gulp.task('copy-views', function () {

    gulp.src('views/**/*')

        .pipe(

            gulp.dest('dist/views')

        )

})

gulp.task('copy-assets', function () {

    gulp.src('assets/**/*')

        .pipe(

            gulp.dest('dist/assets')

        )

})

//build是gulp中自帶的,是默認的,你不須要更更名字

gulp.task('build', ['copy-views', 'copy-assets'], function () {

    console.log('ok')

})

而後只須要執行如下命令便可,能夠先刪除dist文件夾而後再試查看效果,

gulp build

[23:18:28] Using gulpfile E:\course-wxx\sz1805\lesson2\gulp-lesson\gulpfile.js

[23:18:28] Starting 'copy-views'...

[23:18:28] Finished 'copy-views' after 5.76 ms

[23:18:28] Starting 'copy-assets'...

[23:18:28] Finished 'copy-assets' after 712 μs

[23:18:28] Starting 'build'...

ok

[23:18:28] Finished 'build' after 100 μs

咱們發現dist文件夾又神奇的出現了

接下來咱們接入css預處理方式之sass/scss,這樣咱們就可使用scss來編寫css了

7、sass/scss模塊使用

cnpm i node-sass gulp-sass -S

打開index.html文件,編寫以下代碼,注意咱們不在dist文件夾下編輯任何文件

<body>

    <div class="container"></div>

</body>

在scss文件夾下建立common.scss文件,做爲項目的通用樣式文件,寫入以下代碼

@import './../lib/reset.scss';

.container {

    @include rect(90%, 1000px);

    @include margin(0 auto);

    @include background-color(#eee);

}

安裝壓縮css模塊和更更名字模塊

cnpm i gulp-clean-css gulp-rename -S

如今編輯gulpfile.js文件,而且添加scss任務到默認列表組中

var gulp = require('gulp')

var sass = require('gulp-sass')

var cleanCss = require('gulp-clean-css')

var rename = require('gulp-rename')

gulp.task('copy-views', function () {

    gulp.src('views/**/*')

        .pipe(

            gulp.dest('dist/views')

        )

})

gulp.task('copy-assets', function () {

    gulp.src('assets/**/*')

        .pipe(

            gulp.dest('dist/assets')

        )

})

gulp.task('scss', function () {

    gulp.src('scss/**/*.scss')                            // 找到scss文件夾下的全部的scss文件

        .pipe(sass().on('error',sass.logError))   // 會將scss文件處理爲css文件

        .pipe(rename((path) => {                   // 將css後綴名改成css文件

            path.extname = '.css'

        }))

        .pipe(gulp.dest('dist/css'))                 // 將css文件放在dist目錄下

        .pipe(cleanCss())                               // 將css文件下的css文件進行壓縮處理

        .pipe(rename((path) => {                // 將dist/css後綴名改成**.min.css文件

            path.extname = '.min.css'

        }))

        .pipe(gulp.dest('dist/css'))             // 將**.min.css問價放在dist文件中

})

gulp.task('build', ['copy-views', 'copy-assets','scss'], function () {

    console.log('ok')

})

此時執行以下命令,則可看到dist文件中出現了變化

gulp build

[23:41:52] Using gulpfile E:\course-wxx\sz1805\lesson2\gulp-lesson\gulpfile.js

[23:41:52] Starting 'copy-views'...

[23:41:52] Finished 'copy-views' after 5.25 ms

[23:41:52] Starting 'copy-assets'...

[23:41:52] Finished 'copy-assets' after 574 μs

[23:41:52] Starting 'scss'...

[23:41:52] Finished 'scss' after 3.08 ms

[23:41:52] Starting 'build'...

ok

[23:41:52] Finished 'build' after 84 μs

 

|-dist

    |-assets

    |-css

        common.css        // 未壓縮的css代碼-----含註釋語句

        common.min.css    // 壓縮過的css代碼-----不含註釋語句    

    |-views

若是咱們作的是PC端的頁面,也許咱們得注意一下,在lib/base.scss文件中第14行代碼必須得是normal,若是在移動端須要根據屏幕寬度變化而實時變化的時候,咱們能夠更改成scaling

14 |       responsive-type:        normal   ------   寬高肯定不會變,若是爲scaling高度會隨着寬度變化而變化

若是咱們的文件內容發生改變後(修改完一個文件),咱們不可能實時運行gulp build從新構建出一個新的版本,因此咱們須要監聽文件的變化從而讓它自動更新。

8、監聽文件的變化

不只監聽文件變化,而且執行命令只想寫gulp命令,須要配置默認任務default

修改gulpfile.js文件以下

var gulp = require('gulp')

var sass = require('gulp-sass')

var cleanCss = require('gulp-clean-css')

var rename = require('gulp-rename')

gulp.task('copy-views', function () {

    gulp.src('views/**/*')

        .pipe(

            gulp.dest('dist/views')

        )

})

gulp.task('copy-assets', function () {

    gulp.src('assets/**/*')

        .pipe(

            gulp.dest('dist/assets')

        )

})

gulp.task('scss', function () {

    gulp.src('scss/**/*.scss')                         

        .pipe(sass().on('error',sass.logError))  

        .pipe(rename((path) => {                   

            path.extname = '.css'

        }))

        .pipe(gulp.dest('dist/css'))                 

        .pipe(cleanCss())                               

        .pipe(rename((path) => {                

            path.extname = '.min.css'

        }))

        .pipe(gulp.dest('dist/css'))             

})

gulp.task('watch', function () {

    gulp.watch('views/**/*', ['copy-views'])     //若是監聽到views文件夾內有內容發生變化,觸發copy-views任務

    gulp.watch('assets/**/*', ['copy-assets'])  //若是監聽到assets文件夾內有內容發生變化,觸發copy- assets任務

    gulp.watch('scss/**/*.scss', ['scss'])            //若是監聽到scss文件夾內有內容發生變化,觸發scss任務

})

gulp.task('build', ['copy-views', 'copy-assets','scss'], function () {

    console.log('ok')

})

gulp.task('default', ['build', 'watch']);  //默認執行build任務和watch任務

此時執行gulp指令便可,會自動執行監放任務

gulp
[23:56:23] Using gulpfile E:\course-wxx\sz1805\lesson2\gulp-lesson\gulpfile.js

[23:56:23] Starting 'copy-views'...

[23:56:23] Finished 'copy-views' after 5.57 ms

[23:56:23] Starting 'copy-assets'...

[23:56:23] Finished 'copy-assets' after 633 μs

[23:56:23] Starting 'scss'...

[23:56:23] Finished 'scss' after 4.2 ms

[23:56:23] Starting 'build'...

ok

[23:56:23] Finished 'build' after 94 μs

[23:56:23] Starting 'watch'...

[23:56:23] Finished 'watch' after 19 ms

[23:56:23] Starting 'default'...

[23:56:23] Finished 'default' after 44 μs

-     // 閃動表示繼續監放任務的變化

隨意修改文件內部內容(添加文件,修改文件)便可發現dist文件夾中相對應的都發生了改變,好比咱們修改了views文件夾下的index.html

<div class="container">這裏是頁面</div>

則會發如今dist/views/index.html的內容也發生了改變

上面咱們進行了樣式,佈局的改變,接下來咱們設置一下js的改變

9、js文件的改變以及壓縮

安裝壓縮js的模塊

cnpm i gulp-uglify -S

在js文件夾建立 一個公共js文件common.js,編寫以下內容

alert('千鋒吳大勳')

alert('帥,很帥,很是帥')

修改gulpfile.js文件以下

var gulp = require('gulp')

var sass = require('gulp-sass')

var cleanCss = require('gulp-clean-css')

var rename = require('gulp-rename')

var uglify = require('gulp-uglify')

gulp.task('copy-views', function () {

    gulp.src('views/**/*')

        .pipe(

            gulp.dest('dist/views')

        )

})

gulp.task('copy-assets', function () {

    gulp.src('assets/**/*')

        .pipe(

            gulp.dest('dist/assets')

        )

})

gulp.task('scss', function () {

    gulp.src('scss/**/*.scss')                         

        .pipe(sass().on('error',sass.logError))  

        .pipe(rename((path) => {                   

            path.extname = '.css'

        }))

        .pipe(gulp.dest('dist/css'))                 

        .pipe(cleanCss())                               

        .pipe(rename((path) => {                

            path.extname = '.min.css'

        }))

        .pipe(gulp.dest('dist/css'))             

})

gulp.task('js', function () {

    gulp.src('js/**/*.js')                                // 找到js文件夾下的全部的js文件

        .pipe(rename((path) => {                  // 更改js文件夾下的全部的js文件名字

            path.extname = '.js'

        }))

        .pipe(                                                  // 放到dist/js中

            gulp.dest('dist/js')

        )

        .pipe(uglify())                                    // 壓縮js代碼

        .pipe(rename((path) => {                 // 更改dist/js文件夾下的全部的js文件名字爲*.min.js     

            path.extname = '.min.js'

        }))

        .pipe(                                                 // 放到dist/js中    

            gulp.dest('dist/js')

        )

})

gulp.task('watch', function () {

    gulp.watch('views/**/*', ['copy-views'])

    gulp.watch('assets/**/*', ['copy-assets'])

    gulp.watch('scss/**/*.scss', ['scss'])

    gulp.watch('js/**/*.js', ['js'])

})

gulp.task('build', ['copy-views', 'copy-assets', 'scss', 'js'], function () {

    console.log('ok')

})

gulp.task('default', ['build', 'watch']);

而後運行gulp指令,隨意修改assets、views、js、scss文件夾下的內容,都可發現dist文件中的內容發生了改變

上面的一些操做主要是文件的複製與內容的替換,咱們要想查看實時效果的話還得須要引入服務器

10、服務器的架設

安裝模塊gulp-connect 

cnpm i gulp-connect -S

必定要記住每次修改完文件也要從新啓動服務器,

具體修改文件gulpfile.js配置以下

var gulp = require('gulp')

var sass = require('gulp-sass')

var cleanCss = require('gulp-clean-css')

var rename = require('gulp-rename')

var uglify = require('gulp-uglify')

var connect = require('gulp-connect')

gulp.task('copy-views', function () {

    gulp.src('views/**/*')

        .pipe(

            gulp.dest('dist/views')

        )

        .pipe(connect.reload())        // 從新啓動服務器

})

gulp.task('copy-assets', function () {

    gulp.src('assets/**/*')

        .pipe(

            gulp.dest('dist/assets')

        )

        .pipe(connect.reload())       // 從新啓動服務器

})

gulp.task('scss', function () {

    gulp.src('scss/**/*.scss')                         

        .pipe(sass().on('error',sass.logError))  

        .pipe(rename((path) => {                   

            path.extname = '.css'

        }))

        .pipe(gulp.dest('dist/css'))                 

        .pipe(cleanCss())                               

        .pipe(rename((path) => {                

            path.extname = '.min.css'

        }))

        .pipe(gulp.dest('dist/css'))

        .pipe(connect.reload())       // 從新啓動服務器

})

gulp.task('js', function () {

    gulp.src('js/**/*.js')

        .pipe(rename((path) => {                   

            path.extname = '.js'

        }))

        .pipe(

            gulp.dest('dist/js')

        )

        .pipe(uglify())

        .pipe(rename((path) => {                   

            path.extname = '.min.js'

        }))

        .pipe(

            gulp.dest('dist/js')

        )

        .pipe(connect.reload())       // 從新啓動服務器

})

gulp.task('watch', function () {

    gulp.watch('views/**/*', ['copy-views'])

    gulp.watch('assets/**/*', ['copy-assets'])

    gulp.watch('scss/**/*.scss', ['scss'])

    gulp.watch('js/**/*.js', ['js'])

})

gulp.task('server', function () {          // 默認服務任務server

    connect.server({

        root: 'dist/views',                       //啓動目錄

        livereload: true                           //實時更新數據,須要調用connect.reload()

    })

})

gulp.task('build', ['copy-views', 'copy-assets', 'scss', 'js'], function () {

    console.log('ok')

})

gulp.task('default', ['build', 'watch', 'server']);

咱們都知道,項目中有一個版塊最耗費資源,那就是圖片,因此咱們須要對圖片進行壓縮

11、壓縮圖片

安裝模塊 gulp-imagemin

cnpm i gulp-imagemin -S

修改gulpfile.js文件以下

var gulp = require('gulp')

var sass = require('gulp-sass')

var cleanCss = require('gulp-clean-css')

var rename = require('gulp-rename')

var uglify = require('gulp-uglify')

var connect = require('gulp-connect')

var imageMin = require('gulp-imagemin');

gulp.task('copy-views', function () {

    gulp.src('views/**/*')

        .pipe(

            gulp.dest('dist/views')

        )

        .pipe(connect.reload())

})

gulp.task('copy-assets', function () {

    gulp.src('assets/**/*')

        .pipe(

            gulp.dest('dist/assets')

        )

        .pipe(connect.reload())

})

gulp.task('scss', function () {

    gulp.src('scss/**/*.scss')                         

        .pipe(sass().on('error',sass.logError))  

        .pipe(rename((path) => {                   

            path.extname = '.css'

        }))

        .pipe(gulp.dest('dist/css'))                 

        .pipe(cleanCss())                               

        .pipe(rename((path) => {                

            path.extname = '.min.css'

        }))

        .pipe(gulp.dest('dist/css'))

        .pipe(connect.reload())

})

gulp.task('js', function () {

    gulp.src('js/**/*.js')

        .pipe(rename((path) => {                   

            path.extname = '.js'

        }))

        .pipe(

            gulp.dest('dist/js')

        )

        .pipe(uglify())

        .pipe(rename((path) => {                   

            path.extname = '.min.js'

        }))

        .pipe(

            gulp.dest('dist/js')

        )

        .pipe(connect.reload())

})

gulp.task('image',function(){

    gulp.src('assets/images/**/*')

        .pipe(imageMin({

            optimizationLevel: 5, //類型:Number  默認:3  取值範圍:0-7(優化等級)

            progressive: true, //類型:Boolean 默認:false 無損壓縮jpg圖片

            interlaced: true, //類型:Boolean 默認:false 隔行掃描gif進行渲染

            multipass: true //類型:Boolean 默認:false 屢次優化svg直到徹底優化

        }))

        .pipe(gulp.dest('dist/assets/images'))

})

gulp.task('watch', function () {

    gulp.watch('views/**/*', ['copy-views'])

    gulp.watch('assets/**/*', ['copy-assets'])

    gulp.watch('scss/**/*.scss', ['scss'])

    gulp.watch('js/**/*.js', ['js'])

    gulp.watch('assets/images/**/*', ['image'])

})

gulp.task('server', function () {

    connect.server({

        root: 'dist/views',

        livereload: true

    })

})

gulp.task('build', ['copy-views', 'copy-assets', 'scss', 'js','image'], function () {

    console.log('ok')

})

gulp.task('default', ['build', 'watch', 'server']);

能夠添加一張圖片,執行指令gulp

gulp

[00:38:31] Using gulpfile E:\course-wxx\sz1805\lesson2\gulp-lesson\gulpfile.js

[00:38:31] Starting 'copy-views'...

[00:38:31] Finished 'copy-views' after 5.63 ms

[00:38:31] Starting 'copy-assets'...

[00:38:31] Finished 'copy-assets' after 773 μs

[00:38:31] Starting 'scss'...

[00:38:31] Finished 'scss' after 2.94 ms

[00:38:31] Starting 'js'...

[00:38:31] Finished 'js' after 1.06 ms

[00:38:31] Starting 'image'...

[00:38:31] Finished 'image' after 1.23 ms

[00:38:31] Starting 'build'...

ok

[00:38:31] Finished 'build' after 317 μs

[00:38:31] Starting 'watch'...

[00:38:31] Finished 'watch' after 22 ms

[00:38:31] Starting 'server'...

[00:38:31] Starting server...

[00:38:31] Finished 'server' after 4.29 ms

[00:38:31] Starting 'default'...

[00:38:31] Finished 'default' after 30 μs

[00:38:31] Server started http://localhost:8080

[00:38:31] LiveReload started on port 35729

[00:38:31] Running server

[00:38:32] gulp-imagemin: Minified 1 image (saved 3.7 kB - 9.7%)

至此咱們已經把項目中須要的東西搞的差很少了,如今惟一不足的一點就是,咱們前端中要儘可能的減小http請求數,咱們寫完項目的時候會有好多的css文件,好多的js文件,咱們有必要合併一下

12、合併文件

安裝模塊gulp-concat

cnpm i gulp-concat -S

此處必須說明的是,你們在合併的時候必定要注意一下合併文件的順序,不然會出現順序錯亂的狀況,此處不作說明,只寫簡要代碼,你們能夠根據需求實現此功能

簡易代碼以下

var concat = require('gulp-concat')

gulp.task('contactcss', function () {

    gulp.src(['1.css', '2.css', '3.css', '!4.css']) // 合併1,2,3.css,不包括4.css

        .pipe(concat('app.css'))

        .pipe(gulp.dest('dist/css'))

})

gulp.task('contactjs', function () {

    gulp.src(['1.js', '2.js', '3.js', '!4.js']) // 合併1,2,3.js,不包括4.js

        .pipe(concat('app.js'))

        .pipe(gulp.dest('dist/js'))

})

相關文章
相關標籤/搜索