一、GRUNT的安裝
通過以下命令行安裝CLI
npm install -g grunt-cli
上述命令執行完后,grunt 命令就被加入到你的系統路徑中了,以后就可以在任何目錄下執行此命令了。
安裝Uglify
npm install grunt-contrib-uglify --save-dev
二、使用Uglify
1、創建一個項目文件夾,在文件夾中創建名為package.json和Gruntfile.js的文件
2、在Gruntfile.js文件中寫關於配置信息的js代碼
3、
// 加載提供"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']);
4、在命令行中輸入命令執行Gruntfile.js中的配置
實例參見uglify
三、Uglify的配置項
- mangle:false/true是否混淆變量名,Boolean,
- preseveComments:”all”不刪除注釋/”false”刪除全部注釋/”some”保留部分注釋(@preserve @license @cc_on等注釋),
- banner: 字符串,默認值‘’,這個字符串將被添加到縮小的輸出。 模板字符串(例如<%= config.value%>)將自動展開。
- footer:添加尾部注釋一般格式為
’\n/*!<%=pkg.name%>最后修改於:<%=grunt.template.today(“yyyy-mm-dd”)%>*/’,
- report:報告”min”默認/”none” /”gzip”
- Release:{合並壓縮
files:{ “合並后的文件地址和文件名”:[“要合並的文件1”,”要合並的文件2”,……] }
}
- expression:解析單個表達式,而不是一個程序(用於解析JSON) Boolean,
- Beautify:對生成源代碼的美化,Boolean,
- quoteStyle: 類型:整數,默認值:0,保留或強制引號標記樣式。 0將使用單引號或雙引號,如最小化字節數(更喜歡雙引號時,兩者都會做)
1將始終使用單引號
2將始終使用雙引號
3將保留原引號; - compress : 使用默認選項打開或關閉源壓縮。 如果指定了Object,它將作為選項傳遞給UglifyJS.Compressor().
- sourceMap : boolean, 如果為true,源映射文件將在與dest文件相同的目錄中生成。 默認情況下,它將具有與dest文件相同的basename,但擴展名為.map。
- sourceMapName : 字符串函數,默認值是undefined。要自定義生成的源映射的名稱或位置,請傳遞一個字符串以指示將源映射寫入到何處。 如果提供了函數,則將傳遞uglify目標作為參數,並將返回值用作文件名
- sourceMapIn : 字符串函數,默認值是undefined。來自較早編譯的輸入源映射的位置,例如, 從CoffeeScript。 如果提供了函數,則將傳遞uglify源作為參數,並將返回值用作sourceMap名稱。 這只有在有一個源文件時才有意義。
- sourceMapIncludeSources : Boolean,默認是false。如果要將源映射中的源文件的內容包含為sourcesContent屬性,請傳遞此標志。
- sourceMapRoot :字符串,默認值undefined。使用此選項,您可以自定義瀏覽器在查找源時將使用的根URL。如果源在sourceMapRoot的前置之后不是絕對URL,則相對於源映射解析源。
- sourceMapUrl :字符串,默認值undefined。覆蓋源映射中sourceMappingURL的計算值。 如果源映射位置不是相對於縮小文件的基本路徑,即當使用CDN時也很有用的。
- enclose : 對象,默認值undefined 。使用可配置的參數/參數列表封裝閉包中的所有代碼。 包圍對象中的每個鍵值對實際上是參數對。
- wrap: 字符串,默認值undefined。將所有代碼封裝在一個閉包中,一個簡單的方法來確保沒有泄漏。 對於需要是公共出口和全局變量可用的變量。 wrap的值是全局變量exports,將可用為。
- maxLineLen :number,默認值32000,以符號限制行長。 pass maxLineLen = 0以禁用此安全功能。
- ASCIIOnly : boolean,默認值false。允許將非ASCII字符編碼為\ uxxxx。
- exportAll: boolean,默認值false。當使用wrap時,這將使所有全局函數和變量通過export變量可用。
- screwIE8 :boolean,默認值true。如果您仍然關注完全符合Internet Explorer 6-8怪癖,請將此值設置為false。
- mangleProperties :Boolean,默認值:false.使用默認選項打開或關閉屬性修改。 如果指定了Object,它將直接傳遞到ast.mangle_properties()(模仿命令行行為)
- reserveDOMProperties : boolean,默認值false。將此標志與mangleProperties結合使用可防止內置瀏覽器對象屬性
- exceptionsFiles :數組,[],使用它與mangleProperties傳遞一個或多個JSON文件,其中包含不應該被破壞的變量和對象屬性的列表。 有關文件語法的更多信息,請參閱UglifyJS文檔。 https://www.npmjs.com/package/uglify-js
- nameCache : 字符串,作為uglify的JSON緩存文件的路徑的字符串將創建並用於協調多個運行的丑陋之間的符號調整。 注意:此生成的文件使用與exceptionsFiles文件相同的JSON格式。