日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
JS項(xiàng)目構(gòu)建工具Grunt實(shí)踐:合并文件

Grunt 是一個(gè)基于任務(wù)的 JavaScript 項(xiàng)目命令行構(gòu)建工具,運(yùn)行于 Node.js 平臺(tái)。Grunt 能夠從模板快速創(chuàng)建項(xiàng)目,合并、壓縮和校驗(yàn) CSS & JS 文件,運(yùn)行單元測(cè)試以及啟動(dòng)靜態(tài)服務(wù)器。上一篇文章《Grunt:基于任務(wù)的 JavaScript 項(xiàng)目構(gòu)建工具》介紹了 Grunt 安裝和創(chuàng)建項(xiàng)目框架步驟,這篇文章介紹如何使用 Grunt 合并文件。

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為汾西企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,汾西網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

Grunt 內(nèi)置 concat(文件合并)、lint(代碼校驗(yàn)) 和 min(代碼壓縮) 任務(wù),在 grunt.js 文件配置好任務(wù)后,運(yùn)行 grunt 命令就可以自動(dòng)完成一系列的項(xiàng)目構(gòu)建操作了,如圖示:

對(duì)應(yīng)的 Grunt 配置文件代碼如下:

 
 
 
 
  1. /*global module:false*/ 
  2. module.exports = function(grunt) { 
  3.   // Project configuration. 
  4.   grunt.initConfig({ 
  5.     pkg: '', 
  6.     meta: { 
  7.       banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' + 
  8.         '<%= grunt.template.today("yyyy-mm-dd") %>\n' + 
  9.         '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' + 
  10.         '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + 
  11.         ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */' 
  12.     }, 
  13.     concat: { 
  14.       dist: { 
  15.         src: ['', '.js>'], 
  16.         dest: 'dist/<%= pkg.name %>.js' 
  17.       } 
  18.     }, 
  19.     min: { 
  20.       dist: { 
  21.         src: ['', ''], 
  22.         dest: 'dist/<%= pkg.name %>.min.js' 
  23.       } 
  24.     }, 
  25.     qunit: { 
  26.       files: ['test/**/*.html'] 
  27.     }, 
  28.     lint: { 
  29.       files: ['grunt.js', 'src/**/*.js', 'test/**/*.js'] 
  30.     }, 
  31.     watch: { 
  32.       files: '', 
  33.       tasks: 'lint qunit' 
  34.     }, 
  35.     jshint: { 
  36.       options: { 
  37.         curly: true, 
  38.         eqeqeq: true, 
  39.         immed: true, 
  40.         latedef: true, 
  41.         newcap: true, 
  42.         noarg: true, 
  43.         sub: true, 
  44.         undef: true, 
  45.         boss: true, 
  46.         eqnull: true, 
  47.         browser: true 
  48.       }, 
  49.       globals: { 
  50.         jQuery: true 
  51.       } 
  52.     }, 
  53.     uglify: {} 
  54.   }); 
  55.   // Default task. 
  56.   grunt.registerTask('default', 'lint qunit concat min'); 
  57. }; 

這篇文章先介紹 concat 任務(wù),后面幾個(gè)任務(wù)將會(huì)在隨后的文章陸續(xù)介紹。

Grunt 合并文件

Grunt 內(nèi)置的 concat 任務(wù)用于合并一個(gè)或者多個(gè)文件(或者指令,例如指令)到一個(gè)文件。concat 任務(wù)的項(xiàng)目配置框架:

 
 
 
 
  1. // 項(xiàng)目配置 
  2. grunt.initConfig({ 
  3.   // 項(xiàng)目元數(shù)據(jù),用于  指令 
  4.   meta: {}, 
  5.   // 將要被合并的文件列表 
  6.   concat: {} 
  7. }); 

基本用法

把 src 目錄下的 intro.js、projject.js、outro.js 三個(gè)文件合并到 built.js 文件并存放在 dist 目錄,配置示例:

 
 
 
 
  1. grunt.initConfig({  
  2.   concat: {  
  3.     dist: {  
  4.       src: ['src/intro.js', 'src/project.js', 'src/outro.js'],  
  5.       dest: 'dist/built.js' 
  6.     }  
  7.   }  
  8. }); 

添加注釋

還可以通過(guò) 指令在合并文件中添加注釋,例如包名、版本、生成時(shí)間等,示例代碼:

 
 
 
 
  1. grunt.initConfig({  
  2.   pkg: '',  
  3.   meta: {  
  4.     banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +  
  5.       '<%= grunt.template.today("yyyy-mm-dd") %> */' 
  6.   },  
  7.   concat: {  
  8.     dist: {  
  9.       src: ['', ''],  
  10.       dest: 'dist/built.js' 
  11.     }  
  12.   }  
  13. }); 

多個(gè)構(gòu)建目標(biāo)

在實(shí)際項(xiàng)目中,往往需要根據(jù)模塊生成多個(gè)目標(biāo)文件,例如基礎(chǔ)模塊和插件模板分開打包,配置示例:

 
 
 
 
  1. grunt.initConfig({  
  2.   concat: {  
  3.     basic: {  
  4.       src: ['src/main.js'],  
  5.       dest: 'dist/basic.js' 
  6.     },  
  7.     extras: {  
  8.       src: ['src/main.js', 'src/extras.js'],  
  9.       dest: 'dist/with_extras.js' 
  10.     }  
  11.   }  
  12. }); 

動(dòng)態(tài)文件名

Grunt 合并任務(wù)還可以生成動(dòng)態(tài)的文件名,

 
 
 
 
  1. grunt.initConfig({  
  2.   pkg: '',  
  3.   dirs: {  
  4.     src: 'src/files',  
  5.     dest: 'dist/<%= pkg.name %>/<%= pkg.version %>' 
  6.   },  
  7.   concat: {  
  8.     basic: {  
  9.       src: ['<%= dirs.src %>/main.js'],  
  10.       dest: '<%= dirs.dest %>/basic.js' 
  11.     },  
  12.     extras: {  
  13.       src: ['<%= dirs.src %>/main.js', '<%= dirs.src %>/extras.js'],  
  14.       dest: '<%= dirs.dest %>/with_extras.js' 
  15.     }  
  16.   }  
  17. }); 

配置好以后,運(yùn)行下面的命令就可以進(jìn)行文件合并操作了:

合并后的代碼示例如下:

 
 
 
 
  1. /*! Gruntdemo - v0.1.0 - 2013-01-22  
  2. * https://github.com/dreamsky/grunt-demo  
  3. * Copyright (c) 2013 Andy Li; Licensed MIT */ 
  4. (function($) {  
  5.   // Collection method.  
  6.   $.fn.awesome = function() {  
  7.     return this.each(function() {  
  8.       $(this).html('awesome');  
  9.     });  
  10.   };  
  11.   // Static method.  
  12.   $.awesome = function() {  
  13.     return 'awesome';  
  14.   };  
  15.    
  16.   // Custom selector.  
  17.   $.expr[':'].awesome = function(elem) {  
  18.     return elem.textContent.indexOf('awesome') >= 0;  
  19.   };  
  20. }(jQuery)); 

原文鏈接:http://www.cnblogs.com/lhb25/archive/2013/01/31/grunt-for-javascript-project-b.html


本文題目:JS項(xiàng)目構(gòu)建工具Grunt實(shí)踐:合并文件
分享路徑:http://www.dlmjj.cn/article/cdhdgco.html