前端構建工具gulp入門教程(share)

參考自:http://segmentfault.com/a/1190000000372547css

資源:html

  1. npm上得gulp組件
  2. gulp的Github主頁
  3. 官方package.json文檔
  4. gulp中文官網

 

本文假設你以前沒有用過任何任務腳本(task runner)和命令行工具,一步步教你上手Gulp。不要怕,它其實很簡單,我會分爲五步向你介紹gulp並幫助你完成一些驚人的事情。那就直接開始吧。node

第一步:安裝Node

首先,最基本也最重要的是,咱們須要搭建node環境。訪問http://nodejs.org,而後點擊大大的綠色的install按鈕,下載完成後直接運行程序,就一切準備就緒。npm會隨着安裝包一塊兒安裝,稍後會用到它。nginx

安裝好後記得配置環境變量   NODE_PATH="C:\Users\Gaming\node_modules"   (引號裏的爲本身node的安裝路徑),  配置方法 以下:git

第二步:使用命令行

也許如今你還不是很瞭解什麼是命令行——OSX中的終端(Terminal),windows中的命令提示符(Command Prompt),但很快你就會知道。它看起來沒那麼簡單,但一旦掌握了它的竅門,就能夠很方便的執行不少命令行程序,好比Sass,Yeoman和Git等,這些都是很是有用的工具。github

若是你很熟悉命令行,直接跳到步驟四。npm

爲了確保Node已經正確安裝,咱們執行幾個簡單的命令。json

node -v

回車(Enter),若是正確安裝的話,你會看到所安裝的Node的版本號,接下來看看npm。gulp

npm -v

這一樣能獲得npm的版本號。segmentfault

若是這兩行命令沒有獲得返回,可能node就沒有安裝正確,嘗試重啓下命令行工具,若是還不行的話,只能回到第一步進行重裝。

第三步:定位到項目

如今,咱們已經大體瞭解了命令行而且知道如何簡單使用它,接下來只須要兩個簡單的命令就能定位到文件目錄並看看目錄裏都有些什麼文件。

  1. cd,定位到目錄
  2. ls,列出文件列表

建議多敲敲這兩個命令,瞭解文件系統並知道文件都在哪裏。

習慣使用了這兩個命令後,就要進入咱們的項目目錄,這個目錄各不相同,舉個例子,這是我進入我項目目錄的命令:

cd /Applications/XAMPP/xamppfiles/htdocs/my-project 

成功進入項目目錄後,咱們開始安裝gulp。

第四步:安裝gulp

咱們已經知道如何使用命令行,如今嘗試點新的東西,認識npm而後安裝gulp。

NPM是基於命令行的node包管理工具,它能夠將node的程序模塊安裝到項目中,在它的官網中能夠查看和搜索全部可用的程序模塊。

在命令行中輸入

 npm install -g gulp 
  1. npm是安裝node模塊的工具,執行install命令
  2. -g表示在全局環境安裝,以便任何項目都能使用它

  3. 最後,gulp是將要安裝的node模塊的名字

運行時注意查看命令行有沒有錯誤信息,安裝完成後,你可使用下面的命令查看gulp的版本號以確保gulp已經被正確安裝。

gulp -v

接下來,咱們須要將gulp安裝到項目本地

npm install —-save-dev gulp

 

這裏,咱們使用—-save-dev來更新package.json文件,更新devDependencies值,以代表項目須要依賴gulp。

Dependencies能夠向其餘參與項目的人指明項目在開發環境和生產環境中的node模塊依懶關係,想要更加深刻的瞭解它能夠看看package.json文檔

第五步:新建Gulpfile文件,運行gulp

安裝好gulp後咱們須要告訴它要爲咱們執行哪些任務,首先,咱們本身須要弄清楚項目須要哪些任務。

  • 檢查Javascript
  • 編譯Sass(或Less之類的)文件
  • 合併Javascript
  • 壓縮並重命名合併後的Javascript

安裝依賴

npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename gulp-jshint-html-reporter --save-dev 

 

新建gulpfile文件

如今,組件都安裝完畢,咱們須要新建gulpfile文件以指定gulp須要爲咱們完成什麼任務。

gulp只有五個方法: taskrunwatchsrc,和dest,在項目根目錄新建一個js文件並命名爲gulpfile.js,把下面的代碼粘貼進去:

gulpfile.js

// 引入 gulp
var gulp = require('gulp'); 

// 引入組件
var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');

// 檢查腳本
gulp.task('jshint', function() {
    gulp.src('./js/*.js')
        .pipe(jshint())
       // .pipe(jshint.reporter('default')); //默認在命令行裏輸出結果
        .pipe(jshint.reporter('gulp-jshint-html-reporter', {filename:'jshint-report.html'}));    //輸出結果到 自定義的html文件

});

// 編譯Sass
gulp.task('sass', function() {
    gulp.src('./scss/*.scss')
        .pipe(sass())
        .pipe(gulp.dest('./css'));
});

// 合併,壓縮文件
gulp.task('scripts', function() {
    gulp.src('./js/*.js')
        .pipe(concat('all.js'))
        .pipe(gulp.dest('./dist'))
        .pipe(rename('all.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('./dist'));
});

// 默認任務
gulp.task('default', function(){
    gulp.run('lint', 'sass', 'scripts');

    // 監聽文件變化
    gulp.watch('./js/*.js', function(){
        gulp.run('lint', 'sass', 'scripts');
    });
});

 

如今,分段解釋下這段代碼。

引入組件

var gulp = require('gulp'); 

var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');

 

這一步,咱們引入了核心的gulp和其餘依賴組件,接下來,分開建立lint, sass, scripts 和 default這四個不一樣的任務。

Lint任務

gulp.task('lint', function() {
    gulp.src('./js/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'));
});

 

Link任務會檢查js/目錄下得js文件有沒有報錯或警告。

Sass任務

gulp.task('sass', function() {
    gulp.src('./scss/*.scss')
        .pipe(sass())
        .pipe(gulp.dest('./css'));
});

 

Sass任務會編譯scss/目錄下的scss文件,並把編譯完成的css文件保存到/css目錄中。

Scripts 任務

gulp.task('scripts', function() {
    gulp.src('./js/*.js')
        .pipe(concat('all.js'))
        .pipe(gulp.dest('./dist'))
        .pipe(rename('all.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest('./dist'));
});

 

scripts任務會合並js/目錄下得全部得js文件並輸出到dist/目錄,而後gulp會重命名、壓縮合並的文件,也輸出到dist/目錄。

default任務

gulp.task('default', function(){
    gulp.run('lint', 'sass', 'scripts');
    gulp.watch('./js/*.js', function(){
        gulp.run('lint', 'sass', 'scripts');
    });
});

 

這時,咱們建立了一個基於其餘任務的default任務。使用.run()方法關聯和運行咱們上面定義的任務,使用.watch()方法去監聽指定目錄的文件變化,當有文件變化時,會運行回調定義的其餘任務。

如今,回到命令行,能夠直接運行gulp任務了。

gulp 

這將執行定義的default任務,換言之,這和如下的命令式同一個意思

gulp default 

固然,咱們能夠運行在gulpfile.js中定義的任意任務,好比,如今運行sass任務:

gulp sass

結束語

如今已經作到了設置gulp任務而後運行他們,如今再回顧下以前學習的。

  1. 學習了安裝Node環境
  2. 學習了簡單使用命令行
  3. 學習了用命令行進入項目目錄
  4. 學習了使用npm和安裝gulp
  5. 學習瞭如何運行gulp任務
相關文章
相關標籤/搜索