Grunt之預處理

2022-07-09 03:54:11 字數 3362 閱讀 9609

grunt的註冊任務函式本身會對傳入的引數和配置物件裡的相關屬性進行一定的預處理,方便任務函式進行操作。

grunt的registertask方法和registermultitask方法會進行不同的預處理。

grunt命令通過grunt taskname:arg1:arg2形式的指令碼來傳入引數。

grunt會給task物件增加nameargs屬性,其值為"taskname:arg1:arg2"

grunt會給task物件增加name屬性,其值為"taskname"

grunt會給task物件增加args屬性,registertask方法下其值為 [ 'arg1', 'arg2' ],registermultitask方法下其值為 ['arg2' ]

grunt會給task物件增加flags屬性,registertask方法下其值為 [ arg1:true, arg2:true ],registermultitask方法下其值為 [arg2::true]

grunt會將args作為引數傳給任務的執行函式,registertask方法下會將arg1,arg2作為執行函式的引數,registermultitask方法下會將arg2作為執行函式的引數。

grunt會為task物件新增options方法,該方法可以用來獲取配置引數下與task名稱對應屬性下options屬性中的值。例如

module.exports = function(grunt) 

}});

grunt.registertask("hello", function() );

console.log('hello,'+options.who); //hello,kate

});};

grunt會為task物件新增options方法,該方法除了會獲取配置引數下與task名稱對應屬性下options屬性中的值,其值還會進一步被目標級的options物件的屬性覆蓋,例如

module.exports = function(grunt) ,

jingle:}}

});grunt.registermultitask("hello", function() );

console.log('hello,'+options.who); //hello,jingle

});};

復合任務會依次執行其所包含的所有除了options以外的已命名的子屬性。相應的,註冊復合任務的方法也會依次預處理除了options以外的已命名的子屬性。

每輪任務中,grunt會為task物件賦予target屬性,target屬性值為配置物件當前正被遍歷的目標的名稱。data屬性值為配置物件當前正被遍歷的目標對應的資料。如上例中,在子任務log:jingle中,target為jingle,data為:

}

由於大多的任務都是執行檔案操作,grunt的註冊復合任務的方法中會盡量的將data進一步處理,將其支援的各種格式自動標準化為乙個唯一的格式:檔案陣列格式並將其賦值給任務物件的files屬性。

grunt支援如下的檔案模式:

這個是定義檔案陣列的最簡單的模式,直接定義檔案字串或檔名陣列,對應files[0].src, target屬性值對應files[0].dest。該格式不支援附加屬性。

簡潔格式(compact format)允許單獨定義src或dest,支援附加屬性,直接對應files[0]。

檔案物件格式(files object format)支援多個src-dest對映,屬性名是目標檔案,屬性值是原始檔。可利用該格式指定多個對映,但是不支援附加屬性。

檔案陣列格式(files array format)是files屬性所使用的格式,支援附加屬性,如果不設定expand為true,則相當於將data直接賦值給files

資源搜尋**大全

廣州vi設計公司

module.exports = function(grunt) , //簡潔格式

fileobject:

},filearray: ,]}

}});

grunt.registermultitask("log", function() );

};

輸出為:

[

}]running "log:jian2" (log) task[

}]running "log:compact" (log) task[

}]running "log:fileobject" (log) task[ },}

]running "log:filearray" (log) task[ },}

]

當你希望處理大量的單個檔案時,可以通過匹配和一些替換操作來動態構建乙個檔案列表。只有compact和files array檔案對映格式支援這種動態構建檔案陣列的方式,這時需要在src中增加一些萬用字元,並附加一些額外的屬性,最重要的是,我們需要將expand設定為true來開啟這種操作。grunt預設支援的屬性有:

定義原始檔。可為字串或陣列,可包含萬用字元。

簡單常用萬用字元如下:

// 除bar.js之外的所有的.js檔案,按字母順序排序:

// 按字母順序排序的所有.js檔案,但是bar.js在最後。

目標檔案路徑字首。只能為字串

所有src指定的匹配都將相對於此處指定的路徑(但不包括此路徑)

相當於

對於生成的dest路徑中所有實際存在檔案,均使用這個屬性值替換副檔名。

用於指定標記副檔名的英文點號的所在位置。可以賦值 'first' (副檔名從檔名中的第乙個英文點號開始) 或 'last' (副檔名從最後乙個英文點號開始),預設值為 'first'。

從生成的dest路徑中移除所有的路徑部分。

對每個匹配的src檔案呼叫這個函式(在重新命名字尾和移除路徑之後)。dest和匹配的src路徑將被作為引數傳入,此函式應該返回乙個新的dest值。 如果相同的dest返回不止一次,那麼,每個返回此值的src**都將被新增到乙個陣列中作為源列表。

filter屬性對匹配到的原始檔進行過濾,去除不符合條件的原始檔。

filter屬性可定義為任意乙個有效的fs.stats方法名:

grunt.initconfig(,

},});

或者定義你自己的filter函式,通過返回true或者false來保留或者過濾檔案。下面的例子會將字串長度小於4的檔名過濾掉:

grunt.initconfig(,

},},

});

C 之預處理

預處理是指在進行程式編譯的第一遍掃瞄 詞法掃瞄和語法分析 之前所做的工作。預處理是c語言乙個重要功能,它由預處理程式負責完成。當對乙個原始檔進行編譯時,系統將自動引用預處理程式對源程式中的預處理部分進行處理,處理完畢自動進入對源程式的編譯。預處理程式 預處理器 包含在編譯器中。預處理程式首先讀原始檔...

C C 預處理之 define

define 是 c c 中的一條預處理指令,用在一行的開始表示乙個預處理指令的開始 一條預處理指令以回車作為結束符,而不是以分號,分號會被替換掉。define m 4 把 m 定義為 4 define max a,b a b a b 定義表示式,而不是定義函式。所有的 define 預處理都只是起...

weka之資料預處理

weka在做資料預處理的時候針對attribute提供了多種方式,包括值的各種轉換,常用的如下 1.缺失值處理 weka.filters.unsupervised.attribute.replacemissingvalues。對於數值屬性,用平均值代替缺失值,對於nominal屬性,用它的mode ...