国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Grunt教程-前端自動化

pingink / 2251人閱讀

摘要:為何選擇壓縮編譯單元測試代碼檢查等我們需要自動化,不必重復勞動,減小工作量。用于保存項目元數據。圖像壓縮模塊。監視文件變動,做出相應動作。

為何選擇Grunt?
  

壓縮、編譯、單元測試、代碼檢查等 我們需要自動化,不必重復勞動,減小工作量。為何選擇Grunt呢?好像是沒有更好的選擇了。

準備工作 安裝node.js
  

Grunt基于Node.js,安裝之前要先安裝Node.js。

shellbrew install node  
更新npm
shellsudo npm install npm -g
安裝 grunt-cli
  

安裝 grunt-cli 并不等于安裝了 Grunt 任務運行器
Grunt CLI 的任務是運行 Gruntfile 指定的 Grunt 版本。 這樣就可以在一臺電腦上同時安裝多個版本的 Grunt。(沒有懂,俺直接實戰)

shellnpm install -g grunt-cli
Grunt必備文件
  

創建文件必須創建文件夾,我建立了一個 test 的文件夾,一個標準的 grunt 項目中必須有兩個文件。

package.json:用于保存項目元數據。
Gruntfile.js : 用于配置或定義任務、加載 Grunt 插件。

在test1文件夾中創建這兩個文件吧。那么文件中寫什么內容呢。我們首先來關注一下package.json寫什么內容

json{
  "name": "test",
  "version": "1.0.0"
}
運行

在項目的根目錄下運行下面的命令

shellnpm install
命令執行過程
lognpm WARN package.json test1@1.0.0 No description
npm WARN package.json test1@1.0.0 No repository field.
npm WARN package.json test1@1.0.0 No README data
  

提示說沒有描述信息沒有README之類的
在根目錄添加一個 README.md 文件

添加內容

在 package.json 中添加下面內容之后

{
  "name": "test",
  "version": "1.0.0",
  "description": "測試的例子",
  "repository": {
    "type": "git",
    "url": "https://github.com/JSLite/JSLite.git"
  }
}
  

于是乎萬事大吉了

安裝 Grunt 插件
  

在此項目中安裝 Grunt 插件

shellsudo npm install grunt --save-dev

package.json的文件內容發現多了 devDependencies 的信息
目錄多了一個 node_modules 的文件夾

json{
  "name": "test",
  "version": "1.0.0",
  "description": "測試的例子",
  "repository": {
    "type": "git",
    "url": "https://github.com/JSLite/JSLite.git"
  },
  "devDependencies": {
    "grunt": "^0.4.5"
  }
}

運行 npm install --save-dev,不僅會安裝指定的 模塊,還會自動添加到 devDependencies 區域中,且包括 版本范圍。

grunt-contrib-uglify
  

插件用途:壓縮js,css文件
插件名稱:grunt-contrib-uglify

安裝
shellsudo npm install grunt-contrib-uglify --save-dev

安裝成功之后 在package.json的文件內容中的 devDependencies 的信息又增加了

json  "devDependencies": {
    "grunt": "^0.4.5",
    "grunt-contrib-uglify": "^0.8.0"
  }
使用方法
  

還記得我們上面說一個Grunt項目要兩個必須的文件一個 package.jsonGruntfile.js,注意大小寫,Linux區分大小寫的,創建 Gruntfile.js 并寫入如下內容

js// 包裝函數
module.exports = function(grunt) {

  // 任務配置,所有插件的配置信息
  grunt.initConfig({
    pkg: grunt.file.readJSON("package.json"),

    // uglify插件的配置信息
    uglify: {
        options: {
          banner: "/*! This is uglify test - " +
            "<%= grunt.template.today("yyyy-mm-dd") %> */",
          beautify: true,//是否壓縮
          mangle: false, //不混淆變量名
          compress:true,//打開或關閉使用默認選項源壓縮。
        },
        app_task: {
          files: {
            "build/app.min.js": ["lib/index.js", "lib/test.js"]
          }
        }
    }
  });

  // 告訴grunt我們將使用插件
  grunt.loadNpmTasks("grunt-contrib-uglify");

  // 告訴grunt當我們在終端中輸入grunt時需要做些什么
  grunt.registerTask("default", ["uglify"]);

};
分析

banner:在build/app.min.js 文件生成內容如日期什么的

files:將 lib 目錄中的 js 壓縮合并生成到 build 目錄中生成 app.min.js

運行grunt
  

輸入命令下面命令,好了,我的沒有錯誤正常的。如果有錯誤,會有錯誤日志,自己分析哦。

shellgrunt
grunt-contrib-watch
  

插件用途:監控文件變化并自動運行grunt的watch插件
插件名稱:grunt-contrib-watch

安裝
shellsudo npm install grunt-contrib-watch --save-dev
使用
  

修改 Gruntfile.js

initConfig 中添加了

js    // watch插件的配置信息
    watch: {
        another: {
            files: ["lib/*.js"],
            tasks: ["uglify"],
            options: {
                // Start another live reload server on port 1337
                livereload: 1337
            }
        }
    }

增加了一行

jsgrunt.loadNpmTasks("grunt-contrib-watch");

數組中添加了watch

jsgrunt.registerTask("default", ["uglify","watch"]);

添加了watch后,完整的 Gruntfile.js

js// 包裝函數
module.exports = function(grunt) {

  // 任務配置,所有插件的配置信息
  grunt.initConfig({
    pkg: grunt.file.readJSON("package.json"),

    // uglify插件的配置信息
    uglify: {
        options: {
          banner: "/*! This is uglify test - " +
            "<%= grunt.template.today("yyyy-mm-dd") %> */"
        },
        app_task: {
          files: {
            "build/app.min.js": ["lib/index.js", "lib/test.js"]
          }
        }
    },


    // watch插件的配置信息
    watch: {
        another: {
            files: ["lib/*.js"],
            tasks: ["uglify"],
            options: {
                // Start another live reload server on port 1337
                livereload: 1337
            }
        }
    }


  });

  // 告訴grunt我們將使用插件
  grunt.loadNpmTasks("grunt-contrib-uglify");
  grunt.loadNpmTasks("grunt-contrib-watch");

  // 告訴grunt當我們在終端中輸入grunt時需要做些什么
  grunt.registerTask("default", ["uglify","watch"]);

};
grunt-contrib-watch 安裝 stylus
shellsudo npm install grunt-contrib-watch --save-dev
修改 Gruntfile.js

initConfig 中添加了

jsstylus:{
    build: {
        options: {
            linenos: false,
            compress: false,
            banner: "/** 
 * <%= pkg.name %> - <%= pkg.description %>
 * version <%= pkg.version %> 
 * author <%= pkg.author %> 
 * date <%= grunt.template.today() %> 
**/
"
        },
        files: [{
            "css/historyDetail.css": "styl/historyDetail.styl"
        }]
    }
},

下面添加

js    grunt.loadNpmTasks("grunt-contrib-stylus");

paths 將自動使用@import來引入一些Stylus文件,比如一些Mixin集合,放在一個Stylus文件中進行維護,寫在paths中后,就可以在每個Stylus文件中調用它們。define 可以定義一些全局變量,然后在Stylus中使用,但我不喜歡使用這個配置,而是更喜歡把全局變量放在一個多帶帶的Stylus文件中,然后將這個文件加入paths的數組中。一句話,把所有不會直接產出CSS的Stylus代碼分成若干個Stylus文件,然后全部添加到paths中,這樣在所有Stylus文件中都可以隨時調用了,但要注意這些Stylus文件的調用關系和使用先后順序。

compresslinenos 是兩個Boolean值,用來控制是否壓縮處理后的CSS代碼以及是否在CSS代碼中保留注釋。

banner 是一個字符串,會被放置在CSS文件的最前面,一般我用來寫注釋,比如

banner: "/** 
 * <%= pkg.name %> - <%= pkg.description %>
 * version <%= pkg.version %> 
 * author <%= pkg.author %> 
 * date <%= grunt.template.today() %> 
**/
"

firebug 將控制是否使用一個FirebugStylus插件FireStylus for Firebug,可以在Firefox中調試Stylus。

use 可以引入一些Stylus的其他grunt插件。

常用模塊設置

grunt-contrib-clean:刪除文件。npm>>
grunt-contrib-compass:使用compass編譯sass文件。npm>>
grunt-contrib-concat:合并文件。npm>>
grunt-contrib-copy:復制文件。npm>>
grunt-contrib-cssmin:壓縮以及合并CSS文件。npm>>
grunt-contrib-imagemin:圖像壓縮模塊。npm>>
grunt-contrib-jshint:檢查JavaScript語法。npm>>
grunt-contrib-uglify:壓縮以及合并JavaScript文件。npm>>
grunt-contrib-watch:監視文件變動,做出相應動作。npm>>
grunt-contrib-stylus:stylus編寫styl輸出css npm>>

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85549.html

相關文章

  • grunt搭建動化的web前端開發環境-完整教程

    摘要:世界的構建工具為何要用構建工具一句話自動化。由于擁有數量龐大的插件可供選擇,因此,你可以利用自動完成任何事,并且花費最少的代價。要想使用,首先必須將安裝到全局環境中,使用的進行安裝。 你沒有理由不學、不用! jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt, grunt是一套前端自動化工具,一個基于nodeJs的命令行工具,一般用于:...

    wanghui 評論0 收藏0
  • grunt搭建動化的web前端開發環境-完整教程

    摘要:世界的構建工具為何要用構建工具一句話自動化。由于擁有數量龐大的插件可供選擇,因此,你可以利用自動完成任何事,并且花費最少的代價。要想使用,首先必須將安裝到全局環境中,使用的進行安裝。 你沒有理由不學、不用! jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt, grunt是一套前端自動化工具,一個基于nodeJs的命令行工具,一般用于:...

    neroneroffy 評論0 收藏0
  • webpack 3 零基礎入門教程 #1 - 介紹

    摘要:所以它在某些程度上,跟的功能有些相同。嚴格上講,模塊化不是他強調的東西,他旨在規范前端開發流程。更是明顯強調模塊化開發,而那些文件壓縮合并預處理等功能,不過是他附帶的功能。 1. webpack 是什么? showImg(https://segmentfault.com/img/remote/1460000012293461); 先來說一下 webpack 是什么。 webpack 的...

    張紅新 評論0 收藏0
  • Yeoman,bower,Grunt的安裝

    摘要:安裝成功的驗證方式中輸入如果輸出版本號就說明沒有問題。這里再提一點,因為國內的某些原因,通過安裝工具可能會非常慢,這里需要我們做一點修改,也就是使用淘寶鏡像。 最近看視頻學習了前端自動化的一些知識,確實讓我大開眼界。感覺前端越來越神器了。同時跟著視頻自己也嘗試運用了一些工具去構建前端項目,但是中間遇見了很多坑,磕磕絆絆的才實現了一點功能,所以打算記錄一下學習過程中的筆記。 首先列舉一下...

    AZmake 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<