grunt使用小記之uglify:最全的uglify使用DEMO
grunt-contrib-uglify
本文將以一個DEMO來展示如何使用uglify外掛。
DEMO環境
package.json:
{ "name": "grunt-demo", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.2", "grunt-contrib-jshint": "~0.6.0", "grunt-contrib-nodeunit": "~0.2.0", "grunt-contrib-uglify": "~0.2.2" } }
DEMO檔案結構:
其中js資料夾就是用來測試的,Gruntfile.js稍後介紹,其中a.js內容如下:
(function() { //output hello grunt var helloGrunt = "Hello Grunt!(From a.js)"; console.log(helloGrunt); })();
b.js內容如下:
(function() { //output hello world var helloWorld = "Hello World!(From b.js)"; console.log(helloWorld); })();
下面我們來配置四個任務:
- 壓縮a.js,不混淆變數名,保留註釋,新增banner和footer
- 壓縮b.js,輸出壓縮資訊
- 按原檔案結構壓縮js資料夾內所有JS檔案
- 合併壓縮a.js和b.js
Gruntfile.js
現在直接通過Gruntfile.js來看看這四個任務的配置:
module.exports = function(grunt){ // 專案配置 grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), uglify: { options: { banner:'/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'//新增banner }, builda: {//任務一:壓縮a.js,不混淆變數名,保留註釋,新增banner和footer options: { mangle: false, //不混淆變數名 preserveComments: 'all', //不刪除註釋,還可以為 false(刪除全部註釋),some(保留@preserve @license @cc_on等註釋) footer:'\n/*! <%= pkg.name %> 最後修改於: <%= grunt.template.today("yyyy-mm-dd") %> */'//新增footer }, files: { 'output/js/a.min.js': ['js/a.js'] } }, buildb:{//任務二:壓縮b.js,輸出壓縮資訊 options: { report: "min"//輸出壓縮率,可選的值有 false(不輸出資訊),gzip }, files: { 'output/js/b.min.js': ['js/main/b.js'] } }, buildall: {//任務三:按原檔案結構壓縮js資料夾內所有JS檔案 files: [{ expand:true, cwd:'js',//js目錄下 src:'**/*.js',//所有js檔案 dest: 'output/js'//輸出到此目錄下 }] }, release: {//任務四:合併壓縮a.js和b.js files: { 'output/js/index.min.js': ['js/a.js', 'js/main/b.js'] } } } }); // 載入提供"uglify"任務的外掛 grunt.loadNpmTasks('grunt-contrib-uglify'); // 預設任務 grunt.registerTask('default', ['uglify:release']); grunt.registerTask('mina', ['uglify:builda']); grunt.registerTask('minb', ['uglify:buildb']); grunt.registerTask('minall', ['uglify:buildall']); }
通過上面的程式碼,我們很容易就可以看到上面四個任務的配置方式。
執行結果
任務一:壓縮a.js,不混淆變數名,保留註釋,新增banner和footer
執行 grunt mina 命令,生成的a.min.js如下:
/*! grunt-demo 2013-11-29 */ !function(){//output hello grunt var helloGrunt="Hello Grunt!(From a.js)";console.log(helloGrunt)}(); /*! grunt-demo 最後修改於: 2013-11-29 */
跟我們的目標一致。
任務二:壓縮b.js,輸出壓縮資訊
執行 grunt minb 命令,生成的b.min.js如下:
/*! grunt-demo 2013-11-29 */ !function(){var a="Hello World!(From b.js)";console.log(a)}();
命令執行情況:
我們可以看到輸出了壓縮資訊
任務三:按原檔案結構壓縮js資料夾內所有JS檔案
執行 grunt minall 命令,生成目錄結構如下:
其中a.min.js和b.min.js是任務一和任務二生成的,壓縮後的output/js/a.js內容如下:
/*! grunt-demo 2013-11-29 */ !function(){var a="Hello Grunt!(From a.js)";console.log(a)}();
output/js/main/b.js內容如下:
/*! grunt-demo 2013-11-29 */ !function(){var a="Hello World!(From b.js)";console.log(a)}();
任務四:合併壓縮a.js和b.js
執行 grunt命令,生成的output/index.min.js內容如下:
/*! grunt-demo 2013-11-29 */ !function(){var a="Hello Grunt!(From a.js)";console.log(a)}(),function(){var a="Hello World!(From b.js)";console.log(a)}();
至此,本節uglify外掛的介紹就結束了,對本文或使用過程中有任何問題,歡迎留言討論。
相關推薦
grunt使用小記之uglify:最全的uglify使用DEMO
grunt-contrib-uglify 本文將以一個DEMO來展示如何使用uglify外掛。 DEMO環境 package.json: { "name": "grunt-demo", "version": "0.1.0", "devDependencies": {
f2fs系列之八: 最全的SSA 總結
point hot block arm 問題: parent 自身 問題 個數 理解SSA的難點在於 SSA如何避免對SIT/NAT區域零星的寫。這需要深入理解SSA 自身和相關的數據結構和協作關系。 data/node 根據數據冷熱分區 分區的數據以log/journal
Faster-RCNN:最全講解
答主能力有限,寫不出這麼好的文章,通俗易懂還把細節都描述了,所以不要臉的轉載了,這篇文章真的寫的很好,小白應該也能看懂~~~~ 轉自: https://zhuanlan.zhihu.com/p/31426458 經過R-CNN和Fast RCNN的積澱,Ross B. Gir
從0開始認識android(二十二):最全notification詳解
這裡涉及到的是v4支援包中的通知API,因為這些API能將一些比較新的特性相容到4.0版本的裝置,所以,我們第一步要做的是為專案新增v4包依賴: implementation 'com.android.support:support-compat:26.0.0'
Java之史上最全的微信支付+退款實戰。
廢話不多說直接上程式碼: 呼叫類: public class WeixinPayClient{ Logger log = Logger.getLogger(WeixinPayClient.class); private st
轉載:最全最先進的檢測演算法對比Faster R-CNN, R-FCN, SSD, FPN, RetinaNet and YOLOv3
很難衡量一個檢測演算法的好壞,因為除了演算法本身的思路之外,還有許多因素影響它的速度和精度,比如: 特徵提取網路(VGG, ResNet, Inception, MobileNet); 輸出的步長,越大分類數目越多,相應的速度也會受影響; IOU的評判方式;
全棧工程師之路---2018最全web開發路線圖
前後端都需要掌握的技能 Git — You should’ve learned Git yesterday, 15 minutes to learn Git SSH HTTP / HTTPS Terminal Usage — Basic Mac
Android:最全面的 Webview 詳解
前言 現在很多App裡都內建了Web網頁(Hyprid App),比如說很多電商平臺,淘寶、京東、聚划算等等,如下圖 那麼這種該如何實現呢?其實這是Android裡一個叫WebView的元件實現的。今天我將全面介紹WebView的常用用法。
2018年Spring Boot 2.0深度實踐之核心技術篇 最全
第1章 系列總覽 總覽 Spring Boot 2.0 深度實踐系列課程的整體議程,包括 Spring Boot 三大核心特性(元件自動裝配、嵌入式Web容器、生產準備特性)、Web 應用(傳統 Servlet、Spring Web MVC、Spring WebFlux)
WebRTC學習之四:最簡單的語音聊天
VoiceEngine中與最簡單語音聊天相關的標頭檔案有五個,如下表所示: 標頭檔案 包含的類 說明 voe_base.h VoiceEngineObserver VoiceEngine VoEBase 1.預設使用G.711通過RTP進行全雙工的VoI
Android之史上最全最簡單最有用的第三方開源庫收集整理
Android開源庫 自己一直很喜歡Android開發,就如部落格簽名一樣, 我是程式猿,我為自己代言 。 在摸索過程中,GitHub上搜集了很多很棒的Android第三方庫,推薦給在苦苦尋找的開發者,而且我會 不定期的更新 這篇文章。 Android下的優秀開發庫數不勝數,在本文中,我列舉的多是
【開源框架】Android之史上最全最簡單最有用的第三方開源庫收集整理,有助於快速開發,歡迎各位網友補充完善
Android開源庫 自己一直很喜歡Android開發,就如部落格簽名一樣, 我是程式猿,我為自己代言 。 在摸索過程中,GitHub上搜集了很多很棒的Android第三方庫,推薦給在苦苦尋找的開發者,而且我會 不定期的更新 這篇文章。 Android下的優秀
經驗之道:最有效的iOS記憶體洩漏檢測
使用instruments工具來更好的除錯我們的工程中新開發或者修改過的模組的記憶體狀況。 iOS裝置效能越來越好,iOS App 也相應的變得越來越龐大,App程式碼的量級也在快速的增長,開發一個小的模組在工程中除錯變的越來越難,通常我們是通過觀察Allocat
[轉]【開源框架】Android之史上最全最簡單最有用的第三方開源庫收集整理,有助於快速開發
原文地址:http://www.tuicool.com/articles/jyA3MrU Android開源庫 自己一直很喜歡Android開發,就如部落格簽名一樣, 我是程式猿,我為自己代言 。 在摸索過程中,GitHub上搜集了很多很棒的Android第三方庫
【開源框架】Android之史上最全最簡單最有用的第三方開源庫收集整理
Android開源庫 自己一直很喜歡Android開發,就如部落格簽名一樣, 我是程式猿,我為自己代言。 在摸索過程中,GitHub上搜集了很多很棒的Android第三方庫,推薦給在苦苦尋找的開發者,而且我會不定期的更新這篇文章。 Android下的優秀開發庫數不
Android:最全面的Socket使用解析
前言 Socket的使用在Android的網路程式設計中非常重要今天我將帶大家全面瞭解Socket及其使用方法 目錄 1.網路基礎 1.1 計算機網路分層 計算機網路分為五層:物理層、資料鏈路層、網路層、運輸層、應用層 其中: 網路層:負責根據IP找到目的地址的主機運輸層:通過埠把資料傳到目的主機的目
python如何學習:最全學習路線
目標 功能 如何 python 相關操作 python學習 飛機 思想 靜態方法 最近開始整理python的資料,博主建立了一個qq群,希望給大家提供一個交流的同平臺 78486745 。 Python語法簡單,功能強大,越來越多的功能庫,已經有越來越多的企業使用py
Hexo+NexT(零):最全Hexo+Next搭建部落格教程
快速、簡潔且高效的部落格框架 有位大神說,喜歡寫部落格的人的人,折騰部落格會經歷三個階段。找到一個免費空間,搭建一個部落格,很欣喜,很有成就感,此為一階段;受限免費空間各種限制,自己買空間和域名,實現對部落格的完全控制,此為二階段;管理網站太累,只想安安靜靜碼文字,管理網站這種瑣事,交給專業的人士去打理吧
【Github教程】史上最全github使用方法:github入門到精通之三
GitHub已經成為的一切開放原始碼軟體的基石。開發人員喜歡它,基於它進行協作,並不斷通過它開發令人驚歎的專案。除了程式碼託管,GitHub的主要吸引力是使用它作為一個協作開發工具。在本教程中,讓我們來看看一些最有用的GitHub的功能,特別是使團隊工作更有效率,更高生產力,非常重要的,好玩的那
【Github教程】史上最全github使用方法:github入門到精通之二
註冊賬戶以及建立倉庫 要想使用github第一步當然是註冊github賬號了, github官網地址:https://github.com/。 之後就可以建立倉庫了(免費使用者只能建公共倉庫),Create a New Repository,填好名稱後Create,之後會出現一些倉庫的配置資訊,這