<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      grunt使用小記之uglify:最全的uglify使用DEMO

      grunt-contrib-uglify

      uglify是一個文件壓縮插件,項目地址:https://github.com/gruntjs/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插件的介紹就結束了,對本文或使用過程中有任何問題,歡迎留言討論。

      posted @ 2013-11-29 12:01  artwl  閱讀(34447)  評論(6)    收藏  舉報

      個人簡介

      var ME = {
      	"name": "土豆/Artwl",
      	"job": "coding",
      	"languages": [
      		"JS", "HTML",
                      "CSS", "jQuery"
      		"MVC",".NET",
      		"設計模式"
      	],
      	"hobby": [
      		"閱讀", "旅游",
      		"音樂", "電影"
      	]
      }
      
      TOP
      主站蜘蛛池模板: 色护士极品影院| 久久天天躁狠狠躁夜夜av不卡| 激情伊人五月天久久综合| 国产成人精品日本亚洲网站 | 黄色特级片一区二区三区| 中文字幕人妻在线精品| 峨山| 国产精品揄拍一区二区久久 | 亚洲精品乱码久久久久久中文字幕| 极品无码人妻巨屁股系列| 国产精品一区二区在线蜜芽tv| 日本深夜福利在线观看| 国产中文三级全黄| 国内精品伊人久久久久777| 成人无码潮喷在线观看| 免费观看欧美猛交视频黑人| 日本一道一区二区视频| 婷婷丁香五月深爱憿情网| 亚洲一级片一区二区三区| 青青草原国产精品啪啪视频 | 亚洲精品一区三区三区在| 玩弄漂亮少妇高潮白浆| 边坝县| 精品偷拍一区二区三区在| 免费人成视频在线观看网站| 免费人成网站免费看视频| 一卡2卡三卡4卡免费网站| 欧美日韩国产亚洲沙发| 精品无码国产日韩制服丝袜| 男女性高爱潮免费网站| 亚洲色丰满少妇高潮18p| 口爆少妇在线视频免费观看| 婷婷五月综合丁香在线| 加勒比中文字幕无码一区| 亚洲丶国产丶欧美一区二区三区| 中国女人内谢69xxxx| 伊人色综合久久天天| 大地资源免费视频观看| 宜阳县| 成人永久性免费在线视频| 国产亚洲av手机在线观看|