天天看點

AngularJs 開發app之準備工作3_gulp

寫在前面的話:

  常見的自動建構工具有 grunt、gulp、webpack,把源碼進行合并壓縮,節省帶寬等~

一起來學習 gulp 的使用吧~

三、gulp的使用( gulp 中文網):

  gulp 的優點:基于流、任務化

  常用API: src 、dest 、watch 、task 、pipe

(1)安裝 gulp:

    npm install -g gulp

(2)再在 webapp檔案夾下安裝一些 nodejs 子產品:

    npm init

  之後webapp中就會出現一個package.json檔案,以及一個 node_modules 檔案夾

(3)繼續安裝一些依賴插件:

    npm install --save-dev gulp

  一個一個裝太麻煩了,可用批量安裝的方式(之間用空格分開):

    npm install --save-dev gulp-clean gulp-concat gulp-connect gulp-cssmin gulp-imagemin gulp-less gulp-load-plugins gulp-uglify open

  安裝完了之後 package.json檔案的内容如下圖,可以看到已安裝的依賴(10個)的版本資訊:

    

AngularJs 開發app之準備工作3_gulp

 (4)配置檔案夾,首先要對需要的檔案目錄預先做一下設計,參考如下: 

   目錄結構設計:

     build 用于調試

     dist 用于釋出使用

     src:

       data (用于mock資料)

       image

       script:config,controller,directive,filter,service

       app.js

       style:

       view: 各種html檔案

       index.html

       404.html

  編寫任務   

    lib

    html

    json

    css

    js

    image

    clean

    reload

    watch

 開始編寫任務吧,是以按照任務名稱,下面有九步~

 做法:

    1)在webapp檔案下建立一個檔案gulpfile.js,内容如下:

1 var gulp = require('gulp');
 2 var $ = require('gulp-load-plugins')();
 3 var open = require('open');
 4 
 5 var app = {
 6     srcPath: 'src/',
 7     devPath: 'build/',
 8     prdPath: 'dist/'
 9 };
10 
11 gulp.task('lib', function(){
12     gulp.src('bower_components/**/*')
13     .pipe(gulp.dest(app.devPath + 'vendor'))
14     .pipe(gulp.dest(app.prdPath + 'vendor'))
15 });      

     儲存後,運作如下指令:

      gulp lib

     執行成功後,webapp 檔案夾下出現了 build 、dist 兩個檔案夾,且都包含了 vendor 檔案夾。

      

AngularJs 開發app之準備工作3_gulp

    2)在webapp檔案下建立一個檔案夾 src, 并在gulpfile.js檔案新增如下代碼:

gulp.task('html', function(){
    gulp.src(app.srcPath + '**/*.html')
    .pipe(gulp.dest(app.devPath))
    .pipe(gulp.dest(app.prdPath))
});      

    寫完了之後可以測試一下:在src中建立一個名為view的檔案夾,在view中建立一個1.html文檔(内容為空都沒有關系),然後運作

      gulp html

    執行成功後,webapp 檔案夾下的 build 、dist 兩個檔案夾中,且都包含了 view 檔案夾,證明配置成功啦~

      

AngularJs 開發app之準備工作3_gulp

    3)在gulpfile.js檔案新增如下代碼:

gulp.task('json', function(){
    gulp.src(app.srcPath + 'data/**/*.json')
    .pipe(gulp.dest(app.devPath + 'data'))
    .pipe(gulp.dest(app.prdPath + 'data'))
});      

    寫完了之後可以測試一下:在src中建立一個名為data的檔案夾,在data中建立一個1.json文檔(内容為空都沒有關系),然後運作

      gulp json

    執行成功後,webapp 檔案夾下的 build 、dist 兩個檔案夾中,且都包含了 data 檔案夾,證明配置成功啦~

      

AngularJs 開發app之準備工作3_gulp

   4)在gulpfile.js檔案新增如下代碼:

gulp.task('less', function(){
    gulp.src(app.srcPath + 'style/index.less')
    .pipe($.less())
    .pipe(gulp.dest(app.devPath + 'css'))
    .pipe($.cssmin())
    .pipe(gulp.dest(app.prdPath + 'css'))
});      

    寫完了之後可以測試一下:在src中建立一個名為 style 的檔案夾,在 style 中建立一個1.less文檔 以及一個 index.less文檔 (内容為空都沒有關系),然後運作

      gulp less

    執行成功後,webapp 檔案夾下的 build 、dist 兩個檔案夾中,且都包含了 css 檔案夾及index.css,證明配置成功啦~

注:此處使用index.less作為一個總的引用,在其中使用@import将其他所有的.less檔案都引入過來。

      

AngularJs 開發app之準備工作3_gulp

    5)在gulpfile.js檔案新增如下代碼:

gulp.task('js', function(){
    gulp.src(app.srcPath + 'script/**/*.js')
    .pipe($.concat('index.js'))
    .pipe(gulp.dest(app.devPath + 'js'))
    .pipe($.uglify())
    .pipe(gulp.dest(app.prdPath + 'js'))
});      

    寫完了之後可以測試一下:在src中建立一個名為 script 的檔案夾,在 script 中建立一個1.js文檔 以及一個 2.js文檔 (内容為空都沒有關系),然後運作

      gulp js

    執行成功後,webapp 檔案夾下的 build 、dist 兩個檔案夾中,且都包含了 js 檔案夾及index.js,證明配置成功啦~

注:此處使用index.js作為一個總的引用。

      

AngularJs 開發app之準備工作3_gulp

    6)在gulpfile.js檔案新增如下代碼:

gulp.task('image', function(){
    gulp.src(app.srcPath + 'image/**/*')
    .pipe(gulp.dest(app.devPath + 'image'))
    .pipe($.imagemin())
    .pipe(gulp.dest(app.prdPath + 'image'))
});      

    寫完了之後可以測試一下:在src中建立一個名為 image 的檔案夾,在 image 中加入一個1.png,然後運作

      gulp image

    執行成功後,webapp 檔案夾下的 build 、dist 兩個檔案夾中,且都包含了 image 檔案夾及1.png,且圖檔被壓縮得更小了,原來是72.6k, build中是72.6k, dist中是63.4k。 證明配置成功啦~

      

AngularJs 開發app之準備工作3_gulp

    7)在gulpfile.js檔案新增如下代碼:

gulp.task('clean', function(){
    gulp.src([app.devPath, app.prdPath])
    .pipe($.clean())
});      

    寫完了之後運作

       gulp clean

    執行成功後,webapp 檔案夾下的 build 、dist 兩個檔案夾都消失了。 證明配置成功啦~

  至此,9個裡面已經有7個配置完啦!可以透露一下小技巧了,執行一個指令,将所有需要編譯拷貝的檔案一下全搞定~隻要在gulpfile.js檔案新增如下代碼:

gulp.task('build',['image', 'js', 'less', 'lib', 'html', 'json']);      

    運作: 

      gulp build

    然後之前被删掉的都回來啦~開發時這樣用就比較友善啦,不用運作那麼多次了。同時,還可設定建構時自動打開浏覽器,并指定監控端口為1234,隻要在gulpfile.js檔案新增如下代碼:

gulp.task('serve',['build'], function(){
    $.connect.server({
        root: [app.devPath],
        livereload: true,
        port: 1234
    });
    open('http://localhost:1234');
    gulp.watch('bower_components/**/*',['lib']);
    gulp.watch(app.srcPath + '**/*.html', ['html']);
    gulp.watch(app.srcPath + 'data/**/*.json', ['json']);
    gulp.watch(app.srcPath + 'style/**/*.less', ['less']);
    gulp.watch(app.srcPath + 'image/**/*', ['image']);
    gulp.watch(app.srcPath + 'script/**/*.js', ['js']);
});      

    運作:gulp serve 

當然這樣是不能夠實作重新整理的,還需要進行下一步reload才可。

8)在gulpfile.js檔案新增如下代碼:

  在1~6步 的後面都要加上 reload(),也就是下面的一句話:

    .pipe($.connect.reload());

  執行個體:隻列舉一個~

    

AngularJs 開發app之準備工作3_gulp

這樣的話,每次運作 gulp serve時都能自動更新了,

還有一個方法,可以實作 隻輸入 gulp 即可運作,方法如下,在gulpfile.js檔案新增如下代碼:

gulp.task('default', ['serve']);  //加了這一句之後,直接運作gulp後面不加什麼,就可以直接serve      

來試一下:

  gulp

額,浏覽器自動打開! 并呈現出 index.html中的内容。

 注意:index.html是寫在src路徑下的。

ok 啦~

至此,本文結束~

轉載于:https://www.cnblogs.com/Christeen/p/6491964.html