#gulp#操作手冊_前端資源構(gòu)建工具gulp

1. 安裝nodejs

操作

前往nodejs官網(wǎng),點擊下載安裝包。

858643846-57dfba80aa8af_articlex.png

下載下來是一個鏡像文件,點擊安裝即可。

怎樣檢測nodejs是否安裝成功?

快捷鍵 win+r 打開DOS命令窗口, 敲入 node -v ,輸出node的版本號,即為安裝成功。

2691612478-57dfbb89c9b0d_articlex.png

2. 全局安裝cnpm

操作

DOS窗口任意目錄下,敲入npm install cnpm -g --registry=https://registry.npm.taobao.org
回車,開始安裝cnpm

怎樣檢測cnpm是否安裝成功?

DOS窗口任意目錄下,敲入cnpm -v,輸出cnpm的版本號,即為安裝成功。

3916931146-57dfbe18eb552_articlex.png

3. 全局安裝gulp

操作

DOS窗口任意目錄下,敲入cnpm install gulp -g
回車,開始安裝gulp

怎樣檢測gulp是否安裝成功?

DOS窗口任意目錄下,敲入gulp -v,輸出gulp的版本號,即為安裝成功。

Paste_Image.png

4. 為項目安裝cnpm

DOS命令到項目的根目錄,敲入cnpm init,回車,會提示輸入name,version等信息,不填,直接回車,接著提示Is this OK? 輸入y,回車。

891434793-57dfbfccf1482_articlex.png

會看到根目錄下多了一個文件package.json,打開這個文件,會看到其中的內(nèi)容為:

{
  "name": "cloudbox.weixin",
  "version": "1.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

將其修改為:

    {
  "name": "cloudbox.weixin",
  "version": "1.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "del": "^2.2.2",
    "gulp": "^3.9.1",
    "gulp-cache": "^0.4.5",
    "gulp-clean": "^0.3.2",
    "gulp-clean-css": "^2.0.12",
    "gulp-concat": "^2.6.0",
    "gulp-htmlmin": "^2.0.0",
    "gulp-imagemin": "^3.0.3",
    "gulp-jshint": "^2.0.1",
    "gulp-load-plugins": "^1.3.0",
    "gulp-minify-html": "^1.0.6",
    "gulp-rename": "^1.2.2",
    "gulp-rev": "^7.1.2",
    "gulp-rev-collector": "^1.0.5",
    "gulp-sequence": "^0.4.6",
    "gulp-uglify": "^2.0.0",
    "imagemin-pngquant": "^5.0.0",
    "jshint": "^2.9.3"
  }
}

在根目錄下新建一個空白文件,命名為gulpfile.js,用記事本或者其他文本編輯器將其打開。將以下代碼粘貼進去,并保存。

var gulp = require('gulp'),
    cache = require('gulp-cache'), // 圖片快取,只有更改過得圖片會進行壓縮
    clean = require('gulp-clean'), // 清理目錄或文件
    cleanCss = require('gulp-clean-css'), // 壓縮css
    concat = require('gulp-concat'), // 文件合并 合并css/js文件 減少頁面的Http請求
    htmlmin = require('gulp-htmlmin'), // 壓縮html
    imagemin = require('gulp-imagemin'), // 圖片壓縮
    imageminPngquant = require('imagemin-pngquant'),
    jshint = require('gulp-jshint'),
    minifyHtml = require('gulp-minify-html'), // 壓縮html
    rename = require('gulp-rename'), // 文件重命名
    rev = require('gulp-rev'), // 加MD5后綴
    revCollector = require('gulp-rev-collector'), // 根據(jù)manifests 替換html中引入的路徑
    sequence = require('gulp-sequence'), // 按順序執(zhí)行任務
    uglify = require('gulp-uglify'), // 混淆js
    del = require('del'); // 刪除當前文件所在的目錄下的文件夾

// 壓縮css 并加MD5后綴
gulp.task('cleanCss', function () {
    return  gulp.src('weixin/resources/css/**/*.css') // 需要壓縮的css文件
            //.pipe(concat('style.min.css')) // 合并后的文件名
            //.pipe(rename({suffix : '.min'})) // 重命名壓縮后的css文件
            .pipe(cleanCss()) //執(zhí)行壓縮
            //.pipe(gulp.dest('dist/resources/css')) // 壓縮后的輸出目錄
            .pipe(rev()) // 文件名加MD5后綴
            .pipe(gulp.dest('dist/resources/css')) // 輸出目錄
            .pipe(rev.manifest()) // 生成一個rev-manifest.json
            .pipe(gulp.dest('dist/resources/rev/css')) // 將 rev-manifest.json 保存到 rev/css 目錄內(nèi)
});

// 壓縮js 并加MD5后綴
gulp.task('minifyJs', function () {
    return  gulp.src('weixin/resources/js/**/*.js') // 需要壓縮的Js文件
            //.pipe(rename({suffix : '.min'})) // 重命名壓縮后的Js文件
            .pipe(uglify()) // 執(zhí)行壓縮
            .pipe(rev()) // 文件名加MD5后綴
            .pipe(gulp.dest('dist/resources/js')) // 壓縮后的輸出目錄
            .pipe(rev.manifest())
            .pipe(gulp.dest('dist/resources/rev/js'))
});

// 壓縮圖片
gulp.task('imageMin', function () {
    return  gulp.src('weixin/resources/images/**.*')
            //.pipe(imagemin())
            //.pipe(rev()) // 文件名加MD5后綴
            .pipe(gulp.dest('dist/resources/images'))
            //.pipe(rev.manifest())
            //.pipe(gulp.dest('dist/resources/rev/images'))
});

// 修改引入的文件名
gulp.task('rev', function () {
    return  gulp.src(['dist/resources/rev/**/*.json', 'weixin/*.html']) // 讀取 rev-manifest.json 文件以及需要進行css名替換的文件
            .pipe(revCollector()) // css名替換
            .pipe(gulp.dest('dist/')); // 輸出目錄
});

gulp.task('build', function (done) {
  sequence(
     ['cleanCss', 'minifyJs', 'imageMin'],
     ['rev'],
  done);
});

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

打開DOS命令窗口,項目根目錄下,敲入cnpm install,等待安裝cnpm插件至完成。

微信截圖_20160920110549.png
微信截圖_20160920110611.png

敲入gulp命令,進行前端資源的構(gòu)建,結(jié)束之后,會看到項目的根目錄下多了一個dist的文件夾,文件夾中的內(nèi)容為壓縮過的css,js,并已增加了md5的后綴。

微信截圖_20160920110710.png
微信截圖_20160920110859.png
Paste_Image.png
Paste_Image.png

end.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 本文默認你已經(jīng)安裝好node環(huán)境,并且熟悉node命令,和window cd命令。 gulp簡介 基于nod...
    9I閱讀 2,038評論 4 50
  • nvm、node安裝方式一 使用Homebrew 如果之前通過'brew install node'方式安裝過no...
    Y了個J閱讀 3,904評論 0 3
  • 前言 眾所周知目前比較火的工具就是gulp和webpack,但webpack和gulp卻有所不同,本人兩者的底層研...
    cduyzh閱讀 1,444評論 0 13
  • gulp簡介 gulp,是基于nodejs的前端自動化構(gòu)建工具,用于壓縮項目文件,合并文件,部署等,簡言之,就是解...
    小興nice閱讀 1,111評論 0 4
  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學...
    依依玖玥閱讀 3,299評論 7 55

友情鏈接更多精彩內(nèi)容